114 lines
4.1 KiB
C#
114 lines
4.1 KiB
C#
using SuperSocket.SocketBase.Config;
|
|
using SuperSocket.WebSocket;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace SocketServerTest
|
|
{
|
|
/// <summary>
|
|
/// MainWindow.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class MainWindow : Window
|
|
{
|
|
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 MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
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>
|
|
/// <param name="session"></param>
|
|
private void SocketServer_NewSessionConnected(WebSocketSession session)
|
|
{
|
|
SocketUserModel socketUserModel = new SocketUserModel();
|
|
socketUserModel.ServerpartCode = session.Path.Split('=')[1];
|
|
socketUserModel.UserSession = session;
|
|
if (SocketSessionList == null)
|
|
{
|
|
SocketSessionList = new List<SocketUserModel>();
|
|
}
|
|
SocketSessionList.Add(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();
|
|
}
|
|
|
|
}
|
|
}
|