使用websocket,实现前后端通讯的示例,可针对不同用户发送不同信息

使用websocket,实现前后端通讯的示例,可针对不同用户发送不同信息_第1张图片

前端

这里项目要求,使用的jq语法

  function createwebsocket() {
 if (typeof (WebSocket) == "undefined") {
         console.log("您的浏览器不支持WebSocket");
       } else
        {
        var socket;
           var token = ""//用户唯一标识
//?后面可以带你自己的参数,一般我是作为接收者的唯一标识处理,这样服务端可针对性发送消息
           socket = new WebSocket("ws://你的ip后面是端口:5001?"+token);
         //连接打开事件
          socket.onopen = function() {
         };
         //收到消息事件
         socket.onmessage = msg => {
         var result=msg.data;
         };
         //连接关闭事件
         socket.onclose = function() {
           console.log("Socket已关闭");
         };
         //发生了错误事件
         socket.onerror = function() {
          console.log("Socket发生了错误");
         }
         //窗口关闭时,关闭连接
         window.unload=function() {
           socket.close();
         };
       }
}

后端

1、使用nuget下载Fleck包

2、建立链接,用控制台创建方法,并运行

 //全局
List allSockets = new List();
public  void CsWebsocket()
        {
                FleckLog.Level = Fleck.LogLevel.Debug;
//ws标识http,wss为https
                var server = new WebSocketServer("ws://你的ip地址,后面是你的端口:5001");
                server.Start(socket =>
                {
                    socket.OnOpen = () =>
                    {
//用户建立链接后,将用户存储至全局socket集合
                        Logger.Info("Open:" + socket.ConnectionInfo.Path);
                        allSockets.Add(socket);
                    };
                    socket.OnClose = () =>
                    {
//用户断开链接,从全局集合中移除
                        Logger.Info("Close:" + socket.ConnectionInfo.Path);
                        allSockets.Remove(socket);
                    };
                    socket.OnMessage = message =>
                    {
                        Console.WriteLine(message);
                        //allSockets.ForEach(s => s.Send("Echo: " + message));
                    };
                });
                Console.ReadLine();
        }

3、服务端向接收端发送请求,这里可以根据你实际业务情况进行修改

      foreach (var socket in socketlist)
                        {
//这段代码是收到请求后,处理完具体业务,然后把处理成功的消息发送给具体的接收者
//前端url后面是可带参数的,参数存储在socket.ConnectionInfo.Path路径中,稍微切割下就好了
                            if (Params.userid == socket.ConnectionInfo.Path.Split('?')[1])
                            {
                                try
                                {
                                    socket.Send("导出成功");
                                }
                                catch (Exception ex)
                                {
                                   
                                }
                            } 
                        }

你可能感兴趣的:(c#,websocket,网络,c#)