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

总感觉这种传参方式有点好笑;要是有人不吝赐教的话感激不尽!

原文地址:https://www.cnblogs.com/pyf97/p/14225465.html