Files
wcs/WCS.BLL/Manager/WebSoceketManager.cs
hehaibing-1996 00621bcd55 1.增加盟讯公司业务逻辑相关适配 前后端增加配置参数“ISMX”进行控制
2.前端websocket取消心跳机制(原有心跳和断线重连当服务端网线断开后需要等tcp保活期到期后才能发现重连),自己实现心跳和重连
3.前端关闭后任占用后台线程问题修复
2024-05-25 17:25:27 +08:00

68 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;
using TouchSocket.Sockets;
namespace WCS.BLL.Manager
{
public static class WebSoceketManager
{
public static HttpService service;
public static object flag = new object();
public static void InitWebSocket()
{
Console.WriteLine("【启动WebSocket】开始");
Logs.Write("【启动WebSocket】开始", LogsType.StartBoot);
service = new HttpService();
service.Setup(new TouchSocketConfig()//加载配置
.SetListenIPHosts(7789)
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
a.UseWebSocket()//添加WebSocket功能
.SetWSUrl("/ws")//设置url直接可以连接。
.UseAutoPong();//当收到ping报文时自动回应pong
a.Add<WebSocketServicePlugin>();//自定义插件。
}));
//客户端成功连接
service.Connected = (client, e) =>
{
Logs.Write("[WebSocket]" + client.GetIPPort() + "成功连接!", LogsType.StartBoot);
Console.WriteLine("[WebSocket]" + client.GetIPPort() +"成功连接!");
return EasyTask.CompletedTask;
};
service.Start();
Console.WriteLine("【启动WebSocket】结束");
Logs.Write("【启动WebSocket】结束", LogsType.StartBoot);
}
//发送报警信息给前端
public static void TrySendMessage(string IpAddress, string Message)
{
try
{
var clients = service.GetClients().Where(t => t.IP == IpAddress).ToList();
foreach (var client in clients)
{
lock (client)
{
client.WebSocket.Send(Message);
}
}
}
catch (Exception ex)
{
}
}
}
}