Я использую библиотеку 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();
}
}
}