/// <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); }
/// <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; } }