首页 > Windows开发 > 详细

C# WebSocket 实现客户端和服务端的通信(二)

时间:2021-01-03 15:15:34      阅读:31      评论:0      收藏:0      [点我收藏+]

避免广播 实现一对一聊天 或者群聊;

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

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

 

C# WebSocket 实现客户端和服务端的通信(二)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!