You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.6 KiB
C#

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<IWebSocketConnection> allSockets = new List<IWebSocketConnection>();
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}");
}
}
}
}