private WebSocketSharp.Server.WebSocketServer CreateWebSocketServer(WebSocketServerContext context) { var wsServer = new WebSocketSharp.Server.WebSocketServer(context.IpAddress, context.Port, false); wsServer.ReuseAddress = true; wsServer.AddWebSocketService <WsRootHandler>(WsRootHandler.ServicePath, (x) => { x.M = context.MessageServer.M; x.L = context.MessageServer.L; x.MessageServer = context.MessageServer; x.DataProvider = _commonJsonDataProvider; x.OnClientDisconnected = (sender, args) => { if (!_clientsHandlers.TryRemove(x.SessionId, out x)) { throw new InvalidOperationException($"Client {x.SessionId} is not registered and cannot be deleted."); } }; x.OnClientConnected = (sender, args) => { if (!_clientsHandlers.TryAdd(x.SessionId, x)) { throw new InvalidOperationException($"Client {x.SessionId} has already been connected to WebSocket server."); } }; }); wsServer.AddWebSocketService <WsEchoHandler>(WsEchoHandler.ServicePath, (x) => { x.L = context.MessageServer.L; }); return(wsServer); }
public Server(WebSocketServerContext context) { _context = context; _commonJsonDataProvider = new CommonJsonDataProvider(_context.MessageServer); L = context.MessageServer.L; _webSocketServer = CreateWebSocketServer(context); }