public async Task ConnectAsync(Guid sessionId) { socket = new MessageWebSocket(); socket.MessageReceived += OnSocketMessageReceived; socket.Closed += OnSocketClosed; try { await socket.ConnectAsync(hostUri); State = CommunicationServiceState.EstablishConnection; await SendPacketAsync(socket.OutputStream.AsStreamForWrite(), new HelloPacket { SessionId = sessionId }); State = CommunicationServiceState.Connected; } catch (WebException exception) { State = CommunicationServiceState.Failed; var status = WebSocketError.GetStatus(exception.HResult); Debug.WriteLine("Error: {0}", status); } }
public Task QueryTimeAsync() { if (CommunicationServiceState.Connected != State) { return(Task.CompletedTask); } try { var packet = new CommandPacket { Command = Command.QueryTime }; return(SendPacketAsync(socket.OutputStream.AsStreamForWrite(), packet)); } catch (WebException exception) { State = CommunicationServiceState.Failed; var status = WebSocketError.GetStatus(exception.HResult); Debug.WriteLine("Error: {0}", status); return(Task.CompletedTask); } }
public Task SendMessageAsync(string text) { if (CommunicationServiceState.Connected != State) { return(Task.CompletedTask); } try { var packet = new PublishMessagePacket { Message = text }; return(SendPacketAsync(socket.OutputStream.AsStreamForWrite(), packet)); } catch (WebException exception) { State = CommunicationServiceState.Failed; var status = WebSocketError.GetStatus(exception.HResult); Debug.WriteLine("Error: {0}", status); return(Task.CompletedTask); } }
public Task SetNameAsync(string name) { if (CommunicationServiceState.Connected != State) { return(Task.CompletedTask); } try { var packet = new UpdateProfileRequestPacket { UserName = name }; return(SendPacketAsync(socket.OutputStream.AsStreamForWrite(), packet)); } catch (WebException exception) { State = CommunicationServiceState.Failed; var status = WebSocketError.GetStatus(exception.HResult); Debug.WriteLine("Error: {0}", status); return(Task.CompletedTask); } }