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(); } } }