private void CmdConnect_Click(object sender, EventArgs e) { if (_connected) // Disconnect { if (_client == null) { _connected = false; UpdateButtons(); return; } _client.CloseClientAsync(); } else // Connect { if (int.TryParse(txtPort.Text, out int port)) { if (!IsUriValid(txtServer.Text, port)) { return; } _client = new WsClient(txtServer.Text, int.Parse(txtPort.Text)); _client.ConnectionStateChanged += Client_ConnectionStateChanged; _client.MessageReceived += Client_MessageReceived; _client.ConnectionError += Client_ConnectionError; } else { MessageBox.Show(this, LocalizedResourceHelper.GetLocalizedText(rm, "PortMustBeAnInteger", "Port must be an Integer"), LocalizedResourceHelper.GetLocalizedText(rm, "Error", "Error"), MessageBoxButtons.OK, MessageBoxIcon.Error); } } UpdateButtons(); }
async void ConnectToServerAsync() { Uri connectionUri = new Uri(string.Format("ws://{0}:{1}", ServerName, ServerPort)); try { await client.ConnectAsync(connectionUri, cts.Token); UpdateClientState(); } catch (Exception e) { OnConnectionError(LocalizedResourceHelper.GetLocalizedText(rm, "ConnectionErrorMessage", "Error connecting to server"), e.Message, e.InnerException == null ? "" : e.InnerException.ToString()); return; } await Task.Factory.StartNew(async() => { try { while (client.State == WebSocketState.Open) { await ReadMessage(); } } catch (Exception e) { OnConnectionError(LocalizedResourceHelper.GetLocalizedText(rm, "ConnectionErrorMessage", "Error connecting to server"), e.Message, e.InnerException == null ? "" : e.InnerException.ToString()); } OnConnectionStateChanged(); }, cts.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); }
private void AppendMessage(string Message, bool sending, bool connectionStatus = false) { if (this.InvokeRequired) { this.Invoke(new AppendMessageDelegate(AppendMessage), new object[] { Message, sending, connectionStatus }); } else { if (txtLog.Text.Length > 0) { txtLog.AppendText("\r\n"); } else { txtLog.AppendText(LocalizedResourceHelper.GetLocalizedText(rm, "MessageLogHeaders", "Date/Time Direction Message") + "\r\n"); } txtLog.Select(txtLog.TextLength, 0); if (connectionStatus) { txtLog.SelectionColor = Color.Purple; } else if (sending) { txtLog.SelectionColor = Color.Red; } else { txtLog.SelectionColor = Color.Green; } txtLog.AppendText(string.Format("{0}\t{1}\t{2}", DateTime.Now, connectionStatus ? "" : sending ? LocalizedResourceHelper.GetLocalizedText(rm, "Sent", "Sent") : LocalizedResourceHelper.GetLocalizedText(rm, "Received", "Received"), Message)); } }
private void TextPort_Validating(object sender, CancelEventArgs e) { if (!int.TryParse(txtPort.Text, out _)) { MessageBox.Show(this, LocalizedResourceHelper.GetLocalizedText(rm, "PortMustBeAnInteger", "Port must be an Integer"), LocalizedResourceHelper.GetLocalizedText(rm, "Error", "Error"), MessageBoxButtons.OK, MessageBoxIcon.Error); e.Cancel = true; } }
private void UpdateButtons() { if (this.InvokeRequired) { this.Invoke(new UpdateButtonsDelegate(UpdateButtons)); } else { cmdDisconnect.Enabled = _connected; cmdConnect.Enabled = !cmdDisconnect.Enabled; lblConnectedStatus.Text = _connected ? LocalizedResourceHelper.GetLocalizedText(rm, "Connected", "Connected") : LocalizedResourceHelper.GetLocalizedText(rm, "NotConnected", "Not Connected"); } }
private bool IsUriValid(string server, int port) { try { Uri connectionUri = new Uri(string.Format("ws://{0}:{1}", server, port)); return(true); } catch (UriFormatException e) { MessageBox.Show(this, string.Format("{0}\r\n{1}", LocalizedResourceHelper.GetLocalizedText(rm, "InvalidServerOrPort", "Invalid Server or Port"), e.Message), LocalizedResourceHelper.GetLocalizedText(rm, "Error", "Error"), MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } }
async Task ReadMessage() { WebSocketReceiveResult result; var message = new ArraySegment <byte>(new byte[4096]); do { result = await client.ReceiveAsync(message, cts.Token); if (result.MessageType != WebSocketMessageType.Text) { break; } var messageBytes = message.Skip(message.Offset).Take(result.Count).ToArray(); string receivedMessage = Encoding.UTF8.GetString(messageBytes); Console.WriteLine("{0}: {1}", LocalizedResourceHelper.GetLocalizedText(rm, "Received", "Received"), receivedMessage); OnMessageReceived(receivedMessage); }while (!result.EndOfMessage); }
private void LocalizeFormText() { if (rm == null) { return; } LocalizedResourceHelper.LocalizeControlText(rm, this, "$this.Text"); LocalizedResourceHelper.LocalizeControlText(rm, cmdConnect); LocalizedResourceHelper.LocalizeControlText(rm, cmdDisconnect); LocalizedResourceHelper.LocalizeControlText(rm, cmdSend); LocalizedResourceHelper.LocalizeControlText(rm, exitToolStripMenuItem); LocalizedResourceHelper.LocalizeControlText(rm, fileToolStripMenuItem); LocalizedResourceHelper.LocalizeControlText(rm, githubProjectToolStripMenuItem); LocalizedResourceHelper.LocalizeControlText(rm, helpToolStripMenuItem); LocalizedResourceHelper.LocalizeControlText(rm, lblConnection); LocalizedResourceHelper.LocalizeControlText(rm, lblMessageLog); LocalizedResourceHelper.LocalizeControlText(rm, lblPort); LocalizedResourceHelper.LocalizeControlText(rm, lblSend); LocalizedResourceHelper.LocalizeControlText(rm, lblServer); }
public virtual string L(string resourceKey, params string[] objects) { return(LocalizedResourceHelper.GetText(resourceKey, objects)); }
void OnConnectionStateChanged() { if (IsConnected == lastConnectedState) { return; } lastConnectedState = IsConnected; ConnectionStateChanged?.Invoke(this, new ConnectionStateChangedEventArgs(IsConnected, IsConnected ? LocalizedResourceHelper.GetLocalizedText(rm, "Connected", "Connected") : LocalizedResourceHelper.GetLocalizedText(rm, "NotConnected", "Not Connected"))); }
void UpdateClientState() { OnConnectionStateChanged(); Console.WriteLine($"{LocalizedResourceHelper.GetLocalizedText(rm, "WebsocketState", "Websocket State")} {client.State}"); }