コード例 #1
0
        /// <summary>
        /// 处理消息
        /// </summary>
        /// <param name="eventJson"></param>
        /// <returns></returns>
        private async Task HandlerMessageAsync(string eventJson)
        {
            OnEventMessage?.Invoke(eventJson);
            IEvent        @event       = eventJson.JsonToObject <BaseEvent>();
            IEventHandler eventHandler = _eventBus.GetEventHandler(@event.EventHandler);

            @event = (IEvent)eventJson.JsonToObject(eventHandler.EventType);
            await eventHandler.HandlerAsync(@event, ClientWebSocket);
        }
コード例 #2
0
        /// <summary>
        /// 开始监听
        /// </summary>
        /// <returns></returns>
        private async void StartListeningAsync()
        {
            try
            {
                if (_isListening)
                {
                    return;
                }
                _isListening = true;
                while (ClientWebSocket.State == WebSocketState.Open)
                {
                    var serverByteArray           = new byte[655300000];
                    var buffer                    = new ArraySegment <byte>(serverByteArray);
                    WebSocketReceiveResult wsData = await ClientWebSocket.ReceiveAsync(buffer, _cancellationToken);

                    var bRec = new byte[wsData.Count];
                    Array.Copy(serverByteArray, bRec, wsData.Count);
                    string eventJson = _clientConfig.EncodingType.GetString(bRec);
                    OnEventMessage?.Invoke(eventJson);
                    IEvent        @event       = eventJson.JsonToObject <BaseEvent>();
                    IEventHandler eventHandler = _eventBus.GetEventHandler(@event.EventHandler);
                    @event = (IEvent)eventJson.JsonToObject(eventHandler.EventType);
                    await eventHandler.HandlerAsync(@event, ClientWebSocket);
                }
            }
            catch (Exception exception)
            {
                if (_isManualClose)
                {
                    return;
                }
                await StopAsync(false);

                OnSubMessage?.Invoke("与服务器断开连接", "重要");
                OnException?.Invoke(exception);
                OnClose?.Invoke();
            }
            finally
            {
                _isListening = false;
            }
        }