Exemple #1
0
        public void WebSocketInit()
        {
            string          websocketPath = Utils.GetConfig("websocketPath");
            WebSocketServer wsServer      = new WebSocketServer(websocketPath);

            wsServer.Start(socket =>
            {
                //以下的设置,每当一个新连接进来,都会生效。
                socket.OnOpen = () => {
                    //自定义处理

                    if (this.WsOpenEventHandler != null)
                    {
                        WebsocketEventArgs args = new WebsocketEventArgs();
                        this.WsOpenEventHandler(this, args);
                    }
                };

                socket.OnClose = () => {
                    //从连接集合中移除
                    for (int i = socketListHs.Count - 1; i >= 0; i--)
                    {
                        if (socketListHs[i] == null)
                        {
                            socketListHs.Remove(i);
                        }
                    }
                    PlayerCount = socketListHs.Count;
                    //自定义处理
                    if (this.WsCloseEventHandler != null)
                    {
                        WebsocketEventArgs args = new WebsocketEventArgs();
                        this.WsCloseEventHandler(this, args);
                    }
                };

                socket.OnMessage = (message) =>
                {
                    ClientData cData            = Utils.JsonToObject <ClientData>(message);
                    WebSocketMessage wsocketMsg = new WebSocketMessage(socket.ConnectionInfo.ClientIpAddress, socket.ConnectionInfo.ClientPort.ToString(), socket.ConnectionInfo.Id.ToString("N"), cData);

                    if (Convert.ToBoolean(cData.IsConnSign))
                    {
                        //收到用户上线信息,更新socket列表
                        if (!socketListHs.ContainsKey(cData.IdentityMd5))
                        {
                            socketListHs.Add(cData.IdentityMd5, socket);
                        }
                        else
                        {
                            socketListHs[cData.IdentityMd5] = socket;
                        }
                        PlayerCount = socketListHs.Count;
                    }

                    if (this.WsListenEventHandler != null)
                    {
                        WebsocketEventArgs args = new WebsocketEventArgs();
                        args.WebSocketMessage   = wsocketMsg;
                        this.WsListenEventHandler(this, args);
                    }
                };
            });
        }