WebSocketSharp Clinet Получить файл - PullRequest
0 голосов
/ 14 марта 2019

Я использую библиотеку WebSocketSharp в C #, и я не нашел пример для чтения данных в режиме клиента в приложении Windows. Я попробовал следующий код в режиме консоли, и это правильный ответ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebSocketSharp;
namespace websocket_client
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var ws = new WebSocket("ws://192.168.1.52:8080/ws/uplink/"))
            {
                ws.OnMessage += (sender, e) =>
               Console.WriteLine("Sensor: " + e.Data);
                ws.Connect();
               // ws.Send("BALUS");
                Console.ReadKey(true);
            }
        }
    }
}

Теперь я хочу непрерывно получать данные в приложении Windows. Как я могу это сделать? Я написал код следующим образом, но программа не проверяет сеть постоянно, и он запускается только один раз. Время, которое я использую, пока программа цикла не ожидает новых данных, а данные сохраняются в дубликате.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WebSocketSharp;
using System.Threading;
namespace WEBSOcket_Sharp_V._01
{
    public partial class Form1 : Form
    {
        string strRecieve;
        public Form1()
        {
            InitializeComponent();
        }  

        private void DisplayText(object sender, EventArgs e)
        {
            //textBox2.AppendText(strRecieve);
            txtdata.AppendText("");
            txtdata.AppendText(strRecieve);
        }

        public void Start_WebSocket()
        {
            using (var ws = new WebSocket("ws://192.168.1.52:8080/ws/uplink/"))
            {
                try
                {
                    while (true)
                    {
                        ws.Connect();
                        ws.OnMessage += (sender, e) =>
                        {
                            strRecieve = e.Data;
                            this.Invoke(new EventHandler(DisplayText));
                        };
                    }
                }
                catch
                {
                    MessageBox.Show("error");
                }
              }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(Start_WebSocket));
            t.IsBackground = true;
            t.Start();
        }
    }
}
...