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

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

  • 相关阅读:
    day84
    模型层之单表操作
    Django的模板层
    Django框架导读
    创建Django项目
    名称空间2.0path
    js基础之BOM和DOM
    LG5003 跳舞的线
    20191003 「HZOJ NOIP2019 Round #8」20191003模拟
    LG3092 「USACO2013NOV」No Change 状压DP
  • 原文地址:https://www.cnblogs.com/pyf97/p/14225465.html
Copyright © 2020-2023  润新知