Beispiel #1
0
 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();
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
 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;
     }
 }
Beispiel #5
0
        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");
            }
        }
Beispiel #6
0
 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);
     }
 }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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));
 }
Beispiel #10
0
        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")));
        }
Beispiel #11
0
 void UpdateClientState()
 {
     OnConnectionStateChanged();
     Console.WriteLine($"{LocalizedResourceHelper.GetLocalizedText(rm, "WebsocketState", "Websocket State")} {client.State}");
 }