ChengDa_English/SGGL/WebAPI/Common/PersonKqSocketServices.cs

60 lines
2.0 KiB
C#
Raw Normal View History

2023-12-04 18:12:02 +08:00
using Aspose.Words.Lists;
using Fleck;
using Newtonsoft.Json;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
2023-12-08 18:33:21 +08:00
using System.Security.Cryptography.X509Certificates;
2023-12-04 18:12:02 +08:00
using System.Web;
namespace WebAPI.Common
{
public class PersonKqSocketSersvices
{
public static WebSocketServer webSocketServer;
public static Dictionary<String, IWebSocketConnection> allSockets;
public static void init(int port)
{
allSockets = new Dictionary<string, IWebSocketConnection>();
2023-12-08 18:33:21 +08:00
webSocketServer = new WebSocketServer("wss://0.0.0.0:" + port);
//webSocketServer.Certificate = new X509Certificate2("MyCert.pfx","");
2023-12-04 18:12:02 +08:00
webSocketServer.Start(socket =>
{
socket.OnOpen = () =>
{
};
socket.OnClose = () =>
{
string socketKey = null;
foreach(var key in allSockets.Keys)
{
if(allSockets[key] == socket)
{
socketKey = key;
}
}
if (socketKey != null)
{
allSockets.Remove(socketKey);
}
};
socket.OnMessage = message =>
{
Dictionary<string, object> msg = JsonConvert.DeserializeObject<Dictionary<string,object>>(message);
string projectid = msg["projectid"].ToString();
if (allSockets.ContainsKey(projectid))
{
allSockets[projectid] = socket;
}
else
{
allSockets.Add(projectid , socket);
}
socket.Send("newinout");
};
});
}
}
}