zoukankan      html  css  js  c++  java
  • 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')

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

  • 相关阅读:
    5059 一起去打CS
    2439 降雨量
    vijos P1037搭建双塔
    4979 数塔
    2596 售货员的难题
    P2342 叠积木
    1540 银河英雄传说
    1051 接龙游戏
    hdu1251
    洛谷P1717 钓鱼
  • 原文地址:https://www.cnblogs.com/pyf97/p/14225465.html
Copyright © 2011-2022 走看看