/// <summary> /// Recieves messages and handles them until the first event is recieved. The event is decoded and returned. /// </summary> public virtual async Task <ControllerEvent> ReceiveAsync(WebSocket socket) { byte[] message = await ReceiveRawDataAsync(socket); HandleChangeState(message); // Handles messages until controllers message mode starts. while (_state != MessageManagerState.Controllers && message != null) { if (!HandleChangeState(message)) { switch (_state) { case MessageManagerState.Configuration: HandleConfiguration(message); break; case MessageManagerState.Initial: HandleInitialMessage(message); break; default: throw new Exception(); } } message = await ReceiveRawDataAsync(socket); } if (message == null) { OnCloseMessage?.Invoke(); return(null); } return(HandleControllerEvent(message)); }
public static void CloseMessage() { OnCloseMessage?.Invoke(); }