//消息处理事件
 protected internal static bool HandleMsg_Event(WebSocket_Msg msg)
 {
     if (WebSocket_Msg_Trigger != null)
     {
         WebSocket_Msg_EventArgs pArgs = new WebSocket_Msg_EventArgs(msg);
         WebSocket_Msg_Trigger(null, pArgs);
         return(true);
     }
     return(true);
 }
        //消息发送
        public Task SendMessageAsync(string msgStr, string action = "", string msgTag = "")
        {
            WebSocket_Msg pMsg = new WebSocket_Msg()
            {
                Action              = action,
                MsgStr              = msgStr,
                MsgTag              = msgTag,
                SendClientId        = this.ID,
                SendClientChannelId = this.Channel
            };

            var msg      = JsonConvert.SerializeObject(pMsg);
            var msgBytes = Encoding.UTF8.GetBytes(msg);

            return(_webSocket.SendAsync(new ArraySegment <byte>(msgBytes, 0, msgBytes.Length), WebSocketMessageType.Text, true, CancellationToken.None));
        }
        //消息处理事件
        protected internal bool HandleMsg_Event(WebSocket_Msg msg)
        {
            if (WebSocket_Msg_Trigger != null && msg != null)
            {
                WebSocket_Msg_EventArgs pArgs = new WebSocket_Msg_EventArgs(msg);

                //接收握手信息
                if (msg.Action == "handshake")
                {
                    this.ID        = msg.SendClientId;
                    this.IsConnect = true;
                }
                else
                {
                    WebSocket_Msg_Trigger(this, pArgs);
                }
                return(true);
            }
            return(true);
        }
Exemple #4
0
        //处理WebSocket消息路由
        private void HandleMessage(WebSocket_Msg msg)
        {
            var client = WebSocket_Coons.Get(msg.SendClientId);

            switch (msg.Action.ToLower())
            {
            case "@*join*@":
                client.Channel = msg.MsgStr;
                break;

            case "@*leave*@":
                //置空Channel,模拟关闭连接
                client.Channel = "";
                client.WebSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None);
                WebSocket_Coons.Remove(client);
                break;

            default:
                break;
            }
            WebSocket_Server.HandleMsg_Event(msg);
        }
Exemple #5
0
 public WebSocket_Msg_EventArgs(WebSocket_Msg msg = null)
 {
     _msg = msg;
 }