避免广播 实现一对一聊天 或者群聊;
Dictionary<string, IWebSocketConnection> dt = new Dictionary<string, IWebSocketConnection>(); var server = new WebSocketServer("ws://10.11.12.241:5001"); server.Start(socket => { socket.OnOpen = () => { Console.WriteLine("Open!"); allSockets.Add(socket); var Name = socket.ConnectionInfo.Path.Split('?')[1].Split('=')[1]; dt.Add(Name, socket); }; socket.OnClose = () => { Console.WriteLine("Close!"); allSockets.Remove(socket); var Name = socket.ConnectionInfo.Path.Split('?')[1].Split('=')[1]; dt.Remove(Name); }; socket.OnMessage = message => { Console.WriteLine(message); //allSockets.ForEach(s => s.Send("Echo: " + message)); var Name = message.Split('|')[1]; foreach (var item in dt) { if (item.Key == Name) item.Value.Send(message); } }; });
算是简单的实现了一对一聊天 ;
简单来说就是给每一个后台server记录一个前端的名字; 然后根据名字找到指定的server就可以了 。一对多广播 也就是建立一个集合 给集合里面的server推送消息。目前就是这样理解的。
var ws =new WebSocket('ws://10.11.12.241:5001?uid=321')
总感觉这种传参方式有点好笑;要是有人不吝赐教的话感激不尽!