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

啾啾我 2016-05-26 04:21:12
网站已经已经好了,用.net c#做的,因为后台涉及有会员消息提醒和推送的功能,最开始我使用的是ajax轮询,每隔5秒获取一次,太浪费资源了,查询资料得知websocket可以实现我想要的效果,不知道大家有没有这方面的实例,完整的哦,只想参考一下,因为我按网上给的有些实例去做老是失败,所以想大神们能给一个完整的实例能运行的。
...全文
9338 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
有 人 吗 ?

62,243

社区成员

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

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

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

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