我在C#中使用WebSocketSharp库,但没有找到示例以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窗体应用程序中的数据。 我怎样才能做到这一点? 我写了如下代码,但是程序不会连续检查网络,它只能运行一次。我在while循环程序中使用的时间不等待新数据,而是将数据存储在重复项中。
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();
}
}
}