.net网站使用websocket实时监控数据,实现消息推送

啾啾我 2016-05-26 04:21:12
网站已经已经好了,用.net c#做的,因为后台涉及有会员消息提醒和推送的功能,最开始我使用的是ajax轮询,每隔5秒获取一次,太浪费资源了,查询资料得知websocket可以实现我想要的效果,不知道大家有没有这方面的实例,完整的哦,只想参考一下,因为我按网上给的有些实例去做老是失败,所以想大神们能给一个完整的实例能运行的。
...全文
9291 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wahahachuang6 2016-11-30
  • 打赏
  • 举报
回复
最近朋友给我推荐GoEasy,说是专业做web消息推送的,我注册了一个账号,体验了一把,还不错,推送到达率高,且服务器稳定,分享一下 https://goeasy.io/
dgsdfdsdffd 2016-09-01
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
websocket编程非常简单,比socket 要简单多了。 网页端,你可以随便搜一下,有很多。随便搜一个例子:http://blog.csdn.net/yl02520/article/details/7296223 服务器端,我建议你使用 Fleck。在你的 vs 上使用 Nuget 来获取额 Fleck 到你的一个 Windows service、Winform、Console或者一个 WPF项目中即可。不要使用 asp.net。
请问,.net做websocket服务端有什么缺点么?为什么要用Fleck
szjarvis 2016-07-15
  • 打赏
  • 举报
回复
楼主实现后发个解决方案出来分享一下。
xiqincai11 2016-07-12
  • 打赏
  • 举报
回复
网页端你用goeasy.js, 服务器端用goeasy的restful API来推送消息。 代码参考:http://hao.jser.com/archive/10657/?utm_source=tuicool&utm_medium=referral
lshfong 2016-06-15
  • 打赏
  • 举报
回复
用长链接,很简单的
正怒月神 版主 2016-06-15
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
websocket编程非常简单,比socket 要简单多了。 网页端,你可以随便搜一下,有很多。随便搜一个例子:http://blog.csdn.net/yl02520/article/details/7296223 服务器端,我建议你使用 Fleck。在你的 vs 上使用 Nuget 来获取额 Fleck 到你的一个 Windows service、Winform、Console或者一个 WPF项目中即可。不要使用 asp.net。
啾啾我 2016-06-14
  • 打赏
  • 举报
回复
引用 7 楼 woshihaorenyajun 的回复:
winfrom的实例你要吗
可以啊,麻烦您发到我的邮箱604426284@qq.com
五毒狼烟 2016-06-03
  • 打赏
  • 举报
回复
winfrom的实例你要吗
wdh123love 2016-05-27
  • 打赏
  • 举报
回复
网站~~~客户端~~~服务器~~~~楼主你的是多个网站?
-小蕾- 2016-05-27
  • 打赏
  • 举报
回复
我这没有实例,你参考这个:http://www.oseye.net/user/kevin/blog/81
啾啾我 2016-05-26
  • 打赏
  • 举报
回复
引用 2 楼 zyl_leilei 的回复:

//client端
usingSystem;
usingSystem.Text;
usingSystem.IO;
usingSystem.Net;
usingSystem.Net.Sockets;
namespacesocketsample
{
  classClass1
  {
   staticvoidMain()
   {
    try
    {
     intport=2000;
     stringhost="127.0.0.1";
     IPAddressip=IPAddress.Parse(host);
     IPEndPointipe=newIPEndPoint(ip,port);//把ip和端口转化为IPEndPoint实例
     Socketc=newSocket

(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//创建一个Socket
     Console.WriteLine("Conneting...");
     c.Connect(ipe);//连接到服务器
     stringsendStr="hello!Thisisasockettest";
     byte[]bs=Encoding.ASCII.GetBytes(sendStr);
     Console.WriteLine("SendMessage");
     c.Send(bs,bs.Length,0);//发送测试信息
     stringrecvStr="";
     byte[]recvBytes=newbyte[1024];
     intbytes;
     bytes=c.Receive(recvBytes,recvBytes.Length,0);//从服务器端接受返回信息
     recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);
     Console.WriteLine("ClientGetMessage:{0}",recvStr);//显示服务器返回信息
     c.Close();
    }
    catch(ArgumentNullExceptione)
    {
     Console.WriteLine("ArgumentNullException:{0}",e);
    }
    catch(SocketExceptione)
    {
     Console.WriteLine("SocketException:{0}",e);
    }
    Console.WriteLine("PressEntertoExit");
    Console.ReadLine();
   }
  }
}

//server端
usingSystem;
usingSystem.Text;
usingSystem.IO;
usingSystem.Net;
usingSystem.Net.Sockets;
namespaceProject1
{
  classClass2
  {
   staticvoidMain()
   {
    try
    {
     intport=2000;
     stringhost="127.0.0.1";
     IPAddressip=IPAddress.Parse(host);
     IPEndPointipe=newIPEndPoint(ip,port);
     Sockets=newSocket

(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//创建一个Socket类
     s.Bind(ipe);//绑定2000端口
     s.Listen(0);//开始监听
     Console.WriteLine("Waitforconnect");
     Sockettemp=s.Accept();//为新建连接创建新的Socket。
     Console.WriteLine("Getaconnect");
     stringrecvStr="";
     byte[]recvBytes=newbyte[1024];
     intbytes;
     bytes=temp.Receive(recvBytes,recvBytes.Length,0);//从客户端接受信息
     recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);
     Console.WriteLine("ServerGetMessage:{0}",recvStr);//把客户端传来的信息显示出

来
     stringsendStr="Ok!ClientSendMessageSucessful!";
     byte[]bs=Encoding.ASCII.GetBytes(sendStr);
     temp.Send(bs,bs.Length,0);//返回客户端成功信息
     temp.Close();
     s.Close();
    }
    catch(ArgumentNullExceptione)
    {
     Console.WriteLine("ArgumentNullException:{0}",e);
    }
    catch(SocketExceptione)
    {
     Console.WriteLine("SocketException:{0}",e);
    }
    Console.WriteLine("PressEntertoExit");
    Console.ReadLine();
   }
  }
}


有完整的示例吗?本人刚接触对这块只了解一些理论知识,能发个完整的示例参考一下吗?谢谢
-小蕾- 2016-05-26
  • 打赏
  • 举报
回复

//client端
usingSystem;
usingSystem.Text;
usingSystem.IO;
usingSystem.Net;
usingSystem.Net.Sockets;
namespacesocketsample
{
  classClass1
  {
   staticvoidMain()
   {
    try
    {
     intport=2000;
     stringhost="127.0.0.1";
     IPAddressip=IPAddress.Parse(host);
     IPEndPointipe=newIPEndPoint(ip,port);//把ip和端口转化为IPEndPoint实例
     Socketc=newSocket

(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//创建一个Socket
     Console.WriteLine("Conneting...");
     c.Connect(ipe);//连接到服务器
     stringsendStr="hello!Thisisasockettest";
     byte[]bs=Encoding.ASCII.GetBytes(sendStr);
     Console.WriteLine("SendMessage");
     c.Send(bs,bs.Length,0);//发送测试信息
     stringrecvStr="";
     byte[]recvBytes=newbyte[1024];
     intbytes;
     bytes=c.Receive(recvBytes,recvBytes.Length,0);//从服务器端接受返回信息
     recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);
     Console.WriteLine("ClientGetMessage:{0}",recvStr);//显示服务器返回信息
     c.Close();
    }
    catch(ArgumentNullExceptione)
    {
     Console.WriteLine("ArgumentNullException:{0}",e);
    }
    catch(SocketExceptione)
    {
     Console.WriteLine("SocketException:{0}",e);
    }
    Console.WriteLine("PressEntertoExit");
    Console.ReadLine();
   }
  }
}

//server端
usingSystem;
usingSystem.Text;
usingSystem.IO;
usingSystem.Net;
usingSystem.Net.Sockets;
namespaceProject1
{
  classClass2
  {
   staticvoidMain()
   {
    try
    {
     intport=2000;
     stringhost="127.0.0.1";
     IPAddressip=IPAddress.Parse(host);
     IPEndPointipe=newIPEndPoint(ip,port);
     Sockets=newSocket

(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//创建一个Socket类
     s.Bind(ipe);//绑定2000端口
     s.Listen(0);//开始监听
     Console.WriteLine("Waitforconnect");
     Sockettemp=s.Accept();//为新建连接创建新的Socket。
     Console.WriteLine("Getaconnect");
     stringrecvStr="";
     byte[]recvBytes=newbyte[1024];
     intbytes;
     bytes=temp.Receive(recvBytes,recvBytes.Length,0);//从客户端接受信息
     recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);
     Console.WriteLine("ServerGetMessage:{0}",recvStr);//把客户端传来的信息显示出

来
     stringsendStr="Ok!ClientSendMessageSucessful!";
     byte[]bs=Encoding.ASCII.GetBytes(sendStr);
     temp.Send(bs,bs.Length,0);//返回客户端成功信息
     temp.Close();
     s.Close();
    }
    catch(ArgumentNullExceptione)
    {
     Console.WriteLine("ArgumentNullException:{0}",e);
    }
    catch(SocketExceptione)
    {
     Console.WriteLine("SocketException:{0}",e);
    }
    Console.WriteLine("PressEntertoExit");
    Console.ReadLine();
   }
  }
}


啾啾我 2016-05-26
  • 打赏
  • 举报
回复
有 人 吗 ?
MvcSignalR MVC的SignalR例子,这是一个SignalR学习的学习例子,从网上下载的QQ模板,简单修改,用SignalR模拟QQ消息 SignalR学习 ASP.NET SignalR 是为.NET 开发者提供即时通讯Web 应用的类库。即时通讯Web服务就是服务器将内容自动推送到已经连接的客户端,而不是服务器等待客户端发起一个新的数据请求。SignalR简化了构建实时应用的过程,它包括了一个Asp .Net服务器端库和一个Js端库,集成了数种常见的消息传输方式,如long polling,WebSocket,并提供相应的Api供开发人员选择如何调用,帮助其可以简单快速地实现客户端与服务器端相互间的实时通信。 当环境条件合适时,SignalR将WebSocket作为底层传输方式的优先实现,当然,它也能很高效地回退到其他技术。同时,SignalR提供了非常良好的Api以供远程调用(RPC) 浏览器中的js代码。 SignalR的优点 SignalR 不仅能够自动管理连接,而且能够同时向所有的客户端广播消息,就像聊天室一样。你也能够发送消息到指定的客户端。SignalR提供的连接是持久的,它不像传统的HTTP连接需要为每次收发消息建立单独的连接。 SignalR 同时在服务端提供了远程过程调用协议(RPC),让你能够“主动”推送消息到浏览器中的客户端,而不像普通的Web服务一样的应答方式。 SignalR 应用能够运用到成千的客户端上,通过使用服务总线、SQL Server或者Redis。 SignalR 是开源的,能够通过GitHub很容易得到。 应用场景 即时响应应用,例如:在线聊天,游戏,天气或者股票信息 用户需要随时更新数据的网页运用,例如:仪表盘和监控运用,其他协同应用程序(文档协同操作)、工作流更新或者是即时表格 高频繁从服务器更新的应用,例如:实时在线游戏
zbus核心是一个独立实现的小巧极速的消息队列(MQ),支持持久化与内存队列, 支持单播、广播、组播等多种消息通信模式;在MQ之上zbus完备地支持了RPC服务,RPC支持独立伺服,基于总线两种模式;同时zbus支持代理服务,基于MQ的HttpProxy实现了类Nginx的HTTP代理服务(支持DMZ网络结构),TcpProxy则支持透明的TCP协议代理,可以代理任何基于TCP的协议,比如代理MySQL数据库。 zbus内建分布式高可用(HA),解决单点问题;Java/.NET/JS/C++/PHP等主流语言接入能力为zbus充当SOA服务总线提供跨平台支持; 在设计上,zbus拥抱KISS准则,所有特性浓缩在一个小小的400K左右的jar包中(非常少的依赖);轻量,MQ核心,方便二次开发,zbus为微服务架构、系统整合、弹性计算、消息推送等场景提供开箱即用的功能支持。 ZBUS主要特性: 1、高速磁盘/内存MQ,支持单播,广播,组播,订阅多种消息模式 2、RPC开箱即用,支持同步异步,动态类代理 3、多语言客户端,Java/.NET/JavaScript/PHP/Python/C++/Go(服务器) 4、轻量级,发行大小 ~3M, 核心 ~400K, 极少依赖 5、高可用无应用故障单点,分布式高可用的内置支持 6、简洁的协议设计,类HTTP头部扩展协议,长短连接,WebSocket支持 7、内置监控,不断丰富的监控指标 ZBUS以轻量弹性著称,目前已知的应用主要分布在证券金融行业,在各大券商内部使用,因为开源同时也有不少二次开发定制的项目存在。 ZBUS可以有多种工作角色: 1、MQ服务器 2、RPC服务器 3、Proxy HTTP/TCP代理 4、服务标准化总线服务器

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧