75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using TouchSocket.Core;
|
|
using TouchSocket.Http.WebSockets;
|
|
|
|
namespace WCS.BLL.Manager
|
|
{
|
|
public class WebSocketServicePlugin : PluginBase, IWebSocketReceivedPlugin
|
|
{
|
|
private readonly ILog m_logger;
|
|
|
|
public WebSocketServicePlugin(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)
|
|
{
|
|
var clients = WebSoceketManager.service.GetClients().ToList();
|
|
clients.ForEach(t =>
|
|
{
|
|
t.WebSocket.Send("我已收到");
|
|
});
|
|
client.Send("我已收到");
|
|
}
|
|
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();
|
|
}
|
|
}
|
|
}
|