C# WebSocket 實現客戶端和服務端的通訊(二)
阿新 • • 發佈:2021-01-03
避免廣播 實現一對一聊天 或者群聊;
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')
總感覺這種傳參方式有點好笑;要是有人不吝賜教的話感激不盡!