ASp.Net Websocket 服务器端实现(三)
来源:互联网 发布:c语言头文件作用 编辑:程序博客网 时间:2024/05/16 19:29
写文不容易,请尊重原创:转载注明 http://blog.csdn.net/meng6098
简陋聊天室简单的asp.net代码实现:
public static Dictionary<string, WebSocket> WSdic = SocketHelper.GetDic; //链接对象字典及用户字典 public static Dictionary<string, object> dicjson = new Dictionary<string, object>(); public WebSocket socket = null; public Thread thread = null; ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]);//封装的发送方法 private void RetenMsg(string msg,int i=-1) { string remsg = "{\"Msg\":\"" + msg + "\"}"; if (i!=-1) { i = WSdic.Count; remsg = "{\"Msg\":\"" + msg + "\",\"nums\":\""+i+"\"}"; } foreach (var dic in WSdic)//将消息分别发送给所有用户 { ArraySegment<byte> buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(remsg)); dic.Value.SendAsync(buffer, System.Net.WebSockets.WebSocketMessageType.Text, true, System.Threading.CancellationToken.None); } } //创建异步方法 public async Task DoTalking(AspNetWebSocketContext context){ bool isAdd = false;//判断此socket是否加入到集合中 socket = context.WebSocket; WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);//从链接异步接受数据 if (socket.State != WebSocketState.Open)//当前用户为不是链接状态 return; } 解析数据 如果是用户接入且链接状态为open将用户名和ws对象放入到用户字典中 while (true) { 获取ws数据 /*这里有一个好玩的地方。当获取ws数据的时候。当有客户端有消息传入的时候才进入到下边否则在此停住,所以不用害怕while把你的服务器拖死*/ if (socket.State == WebSocketState.Open)//当链接状态 { 对内容进行判断 如果是消息则执行消息发送方法 } Else//当不是链接状态时跳出死循环,执行移除方法 { break; } } if (isAdd&&WSdic.ContainsKey(extstr))//移除关闭的socket { 执行移除方法 }}
0 0
- ASp.Net Websocket 服务器端实现(三)
- WebSocket 网页聊天室的实现(服务器端:.net + windows服务,前端:Html5)
- 用C# ASP.NET MVC 实现WebSocket
- ASP.NET实现在服务器端控制网页
- WebSocket的C++服务器端实现
- WebSocket的C++服务器端实现
- WebSocket的C++服务器端实现
- WebSocket的C++服务器端实现
- WebSocket的C++服务器端实现
- ASp.Net Websocket 是什么(一)
- asp.net服务器端跳转页面的三种方法
- asp.net Excel控制(服务器端)
- ASp.Net Websocket 环境支持和前端代码实现(二)
- WebSocket在ASP.NET MVC4中的简单实现
- WebSocket在ASP.NET MVC4中的简单实现
- WebSocket在ASP.NET MVC4中的简单实现
- asp.net mvc 通过api来实现websocket通信
- 15:ASP.NET复习系列- ASP.NET提高- ASP.NET实现在服务器端控制网页
- 高仿百度糯米iOS,版本号:5.13.0
- 如何将.sql文件导入MySQL
- android下的Juint测试
- spring事务管理
- MFC JSON解析-开源jsoncpp
- ASp.Net Websocket 服务器端实现(三)
- object-c(3)
- 部署笔记
- CEF3自研究笔记 一、使用CMake创建CEF3的vs2013的工程文件
- POJ POJ Cash Machine 多重背包
- 被点击菜单,换样式
- 使用Tomcat时8080端口无法直接映射项目的问题
- 基于Laura.Compute开发的C#科学计算器
- 机器学习之正则化(Regularization)