using Fleck; using Sln.Iot.Serilog; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sln.Iot.Business { public class WebSocketBusiness { private List allSockets = new List(); private readonly SerilogHelper _logger; public WebSocketBusiness(SerilogHelper serilogHelper) { _logger = serilogHelper; } public void Init() { var server = new Fleck.WebSocketServer($"ws://0.0.0.0:7181"); server.Start(socket => { socket.OnOpen = () => { var data = socket.ConnectionInfo; _logger.Info("WebSocket Open!"); allSockets.Add(socket); }; socket.OnClose = () => { _logger.Info("WebSocket Close!"); allSockets.Remove(socket); }; socket.OnMessage = message => { //ReceivedMessageRequestInfoEvent?.Invoke(socket, message); }; }); } public void PushMsg(string msg) { try { foreach (var socket in allSockets.ToList()) { socket.Send(msg); _logger.Info($"WebSocket推送信息:{msg}"); } } catch (Exception ex) { _logger.Info($"WebSocket推送信息异常:{ex.Message}"); } } } }