2025-03-28 09:49:56 +08:00

113 lines
4.0 KiB
C#

using SuperSocket.SocketBase.Config;
using SuperSocket.WebSocket;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
namespace SocketService
{
public partial class SocketService : ServiceBase
{
WebSocketServer SocketServer { get; set; }
public class SocketUserModel
{
public string ServerpartCode { get; set; }
public string ShopCode { get; set; }
public string MachineCode { get; set; }
public WebSocketSession UserSession { get; set; }
}
/// <summary>
/// 在线用户列表
/// </summary>
List<SocketUserModel> SocketSessionList { get; set; }
public SocketService()
{
InitializeComponent();
}
/// <summary>
/// 启动服务事件
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
SocketServer = new WebSocketServer();
SocketServer.NewSessionConnected += SocketServer_NewSessionConnected; //当有新的客户端连入时的事件
SocketServer.NewMessageReceived += SocketServer_NewMessageReceived; //当有新的消息传入时的事件
SocketServer.NewDataReceived += SocketServer_NewDataReceived; //当有新的数据传入时的事件
SocketServer.SessionClosed += SocketServer_SessionClosed; //当有客户端断开连接时的事件
ServerConfig serverConfig = new ServerConfig
{
Name = "ESServer",
ServerTypeName = "SServer",
ClearIdleSession = true, //60秒执行一次清理90秒没数据传送的连接
ClearIdleSessionInterval = 60,
IdleSessionTimeOut = 90,//会话连接超时时间(秒)
//MaxRequestLength = 2048, //最大包长度
Ip = System.Net.IPAddress.Any.ToString(),
Port = 7119,
MaxConnectionNumber = 100000
};
if (SocketServer.Setup(serverConfig))
{
SocketServer.Start();
}
}
/// <summary>
/// 关闭服务事件
/// </summary>
protected override void OnStop()
{
if (SocketServer.State == SuperSocket.SocketBase.ServerState.Running)
{
SocketServer.Stop();
}
SocketServer.Dispose();
}
/// <summary>
/// 新的客户端连入时的事件
/// </summary>
/// <param name="session"></param>
private void SocketServer_NewSessionConnected(WebSocketSession session)
{
SocketUserModel socketUserModel = new SocketUserModel();
//session.Items.
throw new NotImplementedException();
}
/// <summary>
/// 客户端断开连接时的事件
/// </summary>
/// <param name="session"></param>
/// <param name="value"></param>
private void SocketServer_SessionClosed(WebSocketSession session, SuperSocket.SocketBase.CloseReason value)
{
throw new NotImplementedException();
}
/// <summary>
/// 新的数据传入时的事件
/// </summary>
/// <param name="session"></param>
/// <param name="value"></param>
private void SocketServer_NewDataReceived(WebSocketSession session, byte[] value)
{
throw new NotImplementedException();
}
/// <summary>
/// 新的消息传入时的事件
/// </summary>
/// <param name="session"></param>
/// <param name="value"></param>
private void SocketServer_NewMessageReceived(WebSocketSession session, string value)
{
throw new NotImplementedException();
}
}
}