1. 程式人生 > 實用技巧 >C# WebSocket 實現客戶端和服務端的通訊(二)

C# WebSocket 實現客戶端和服務端的通訊(二)

避免廣播 實現一對一聊天 或者群聊;

 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')

總感覺這種傳參方式有點好笑;要是有人不吝賜教的話感激不盡!