Example #1
0
        /// <summary>
        /// 创建一个Web套接字 并初始化事件注册
        /// </summary>
        /// <param name="clientId"></param>
        /// <param name="socketAddr"></param>
        /// <returns></returns>
        private UserWebSocket InitOneCaiNiaoSocket(string clientId, string socketAddr)
        {
            WebSocket socket = null;

            if (string.IsNullOrEmpty(socketAddr))
            {
                socket = new WebSocket(CAI_NIAO_SOCKET_ADDRESS);
            }
            else
            {
                socket = new WebSocket(socketAddr);
            }

            //绑定属性
            socket.ClientBindingId = clientId;

            //注册事件
            socket.OnOpen    += Socket_OnOpen;
            socket.OnClose   += Socket_OnClose;
            socket.OnMessage += Socket_OnMessage;
            socket.OnError   += Socket_OnError;



            var userSocket = new UserWebSocket(clientId, socket);

            userSocket.LastAccessTime = DateTime.Now;

            userSocket.CallBackForCheckClientStatus += UserSocket_CallBackForCheckClientStatus;

            UserWebSocketResolver.AddUserSocketToDic(userSocket);


            return(userSocket);
        }
Example #2
0
        /// <summary>
        /// 接收来自客户端的消息
        /// 确认自身仍在激活中
        /// </summary>
        /// <param name="clientId"></param>
        /// <param name="messageId"></param>
        public void GiveMoneyToHouseOwner(string clientId, string messageId)
        {
            if (string.IsNullOrEmpty(clientId) || string.IsNullOrEmpty(messageId))
            {
                return;
            }

            //通知回收器,这个还再激活使用中
            UserWebSocketResolver.OnReceiveMessageFromClient(clientId, messageId);
        }
Example #3
0
        /// <summary>
        /// 处理客户端的消息
        /// </summary>
        /// <param name="clientId"></param>
        /// <param name="socketAddr"></param>
        /// <param name="message"></param>
        private void ProcessClientMessage(string clientId, string socketAddr, string message)
        {
            if (this.ValidateRequest(clientId) == false)
            {
                return;
            }
            var userSocket = UserWebSocketResolver.GetUserSocketFromDic(clientId);

            if (null == userSocket)
            {
                userSocket = InitOneCaiNiaoSocket(clientId, socketAddr);
            }


            if (userSocket.Socket.ReadyState != WebSocketState.Open)
            {
                try
                {
                    userSocket.Socket.Connect();//连接到指定的套接字接口
                }
                catch (Exception ex)
                {
                    SmartClient.Common.Logger.Error(ex);

                    var msg = new CustomMessage {
                        data = string.Format("未能正确连接到Socket连接对象!套接字连接地址:{0}.错误信息:{2}.", userSocket.Socket.Url, ex.Message)
                    };
                    Clients.Caller.onerror(msg);


                    return;
                }
            }



            try
            {
                userSocket.Socket.Send(message);
            }
            catch (Exception ex)
            {
                SmartClient.Common.Logger.Error(ex);

                var msg = new CustomMessage {
                    data = "未能正确发送消息到指定的Socket连接对象!错误信息:" + ex.ToString()
                };
                Clients.Caller.onerror(msg);
            }
        }