Exemple #1
0
        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);
        }
Exemple #2
0
        public Server(WebSocketServerContext context)
        {
            _context = context;
            _commonJsonDataProvider = new CommonJsonDataProvider(_context.MessageServer);
            L = context.MessageServer.L;

            _webSocketServer = CreateWebSocketServer(context);
        }