/// <summary> /// 向自己发送信息 /// </summary> /// <param name="wsocketMsg"></param> public void SendMessageToMe(WebSocketMessage wsocketMsg) { string resultData = ""; if (this.WsResponseTextEventHandler != null) { WebsocketEventArgs args = new WebsocketEventArgs(); args.WebSocketMessage = wsocketMsg; this.WsResponseTextEventHandler(this, args); resultData = args.ResultDataMsg; } if (!string.IsNullOrWhiteSpace(resultData)) { foreach (DictionaryEntry dey in socketListHs) { IWebSocketConnection subConn = (IWebSocketConnection)dey.Value; if (subConn.ConnectionInfo.Id.ToString("N") == wsocketMsg.CGuidID) { subConn.Send(resultData); break; } } } }
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); } }; }); }