提交代码
This commit is contained in:
100
货架标准上位机/WebSocket.cs
Normal file
100
货架标准上位机/WebSocket.cs
Normal file
@ -0,0 +1,100 @@
|
||||
using HandyControl.Controls;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using TouchSocket.Core;
|
||||
using TouchSocket.Http.WebSockets;
|
||||
using TouchSocket.Sockets;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
public static class WebSocket
|
||||
{
|
||||
public static void InitWebSocket()
|
||||
{
|
||||
var client = new WebSocketClient();
|
||||
client.Setup(new TouchSocketConfig()
|
||||
.SetRemoteIPHost("ws://127.0.0.1:7789/ws")
|
||||
.ConfigureContainer(a =>
|
||||
{
|
||||
a.AddConsoleLogger();
|
||||
})
|
||||
.ConfigurePlugins(a =>
|
||||
{
|
||||
a.Add<WebSocketClientPlugin>();
|
||||
//配置心跳
|
||||
a.UseWebSocketHeartbeat()//使用心跳插件
|
||||
.SetTick(TimeSpan.FromSeconds(5));//每5秒ping一次。
|
||||
//配置断线重连
|
||||
a.UseReconnection(-1, true, 1000);//-1表示一直重连
|
||||
}));
|
||||
|
||||
client.Connect();
|
||||
}
|
||||
|
||||
}
|
||||
public class WebSocketClientPlugin : PluginBase, IWebSocketReceivedPlugin
|
||||
{
|
||||
private readonly ILog m_logger;
|
||||
|
||||
public WebSocketClientPlugin(ILog logger)
|
||||
{
|
||||
this.m_logger = logger;
|
||||
}
|
||||
public async Task OnWebSocketReceived(IWebSocket client, WSDataFrameEventArgs e)
|
||||
{
|
||||
switch (e.DataFrame.Opcode)
|
||||
{
|
||||
case WSDataType.Cont:
|
||||
m_logger.Info($"收到中间数据,长度为:{e.DataFrame.PayloadLength}");
|
||||
return;
|
||||
|
||||
case WSDataType.Text:
|
||||
m_logger.Info(e.DataFrame.ToText());
|
||||
if (!client.Client.IsClient)
|
||||
{
|
||||
client.Send("我已收到");
|
||||
}
|
||||
//返回的报警信息 出入库盘点等日志信息
|
||||
else
|
||||
{
|
||||
TextBoxLog.AddLog(e.DataFrame.ToText(), "123", DateTime.Now);
|
||||
//Growl.Error(e.DataFrame.ToText());
|
||||
}
|
||||
return;
|
||||
|
||||
case WSDataType.Binary:
|
||||
if (e.DataFrame.FIN)
|
||||
{
|
||||
m_logger.Info($"收到二进制数据,长度为:{e.DataFrame.PayloadLength}");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_logger.Info($"收到未结束的二进制数据,长度为:{e.DataFrame.PayloadLength}");
|
||||
}
|
||||
return;
|
||||
|
||||
case WSDataType.Close:
|
||||
{
|
||||
m_logger.Info("远程请求断开");
|
||||
client.Close("断开");
|
||||
}
|
||||
return;
|
||||
|
||||
case WSDataType.Ping:
|
||||
client.Pong();
|
||||
break;
|
||||
case WSDataType.Pong:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
await e.InvokeNext();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user