예제 #1
0
        public void Start(IServerParams pParams, Action <IClientConnection> pClientConnectedAction)
        {
            if (!(pParams is ServerParams objParams))
            {
                Log.Error("Incorrect parameters for WebSocket server");
                throw new Exception("Incorrect parameters for WebSocket server");
            }
            _objParams = objParams;
            _objServer.ConnectionTimeoutSeconds = _objParams.ConnectionTimeoutSeconds;

            _objClientConnected = pClientConnectedAction;
            if (!String.IsNullOrEmpty(_objParams.CertPath))
            {
                if (!System.IO.File.Exists(_objParams.CertPath))
                {
                    Log.Error($"{_objParams.CertPath} not found");
                    throw new System.IO.FileNotFoundException($"{_objParams.CertPath} not found");
                }
                _objServer.Start(
                    _objParams.IP,
                    _objParams.Port,
                    new X509Certificate2(new X509Certificate2(System.IO.File.ReadAllBytes(_objParams.CertPath), _objParams.CertPassword))
                    );
            }
            else
            {
                _objServer.Start(_objParams.IP, _objParams.Port);
            }
        }
예제 #2
0
        //Initializes the web socket server that listens for incoming requests
        private static void InitializeWebSockets()
        {
            allSockets = new List <IWebSocketConnection>();
            server     = new WebSocketServer(WEB_SOCKET_SERVICE_URL);

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Connection Opened");
                    offer = null;
                    allSockets.Add(socket);
                };

                socket.OnClose = () =>
                {
                    Console.WriteLine("Connection Closed!");
                    offer = null;
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    Console.WriteLine(message);
                    HandleMessage(message);
                };
            });
        }
예제 #3
0
 public void startListening(int port)
 {
     FleckLog.Level = LogLevel.Debug;
     //var allSockets = new List<IWebSocketConnection>();
     //var server = new WebSocketServer("ws://0.0.0.0:8181");
     server.Start(socket =>
     {
         socket.OnOpen = () =>
         {
             //  Console.WriteLine("Open!");
             allSockets.Add(socket);
             // socket.Send("Connected");
             ClientConnect(socket);
         };
         socket.OnClose = () =>
         {
             // Console.WriteLine("Close!");
             //allSockets.Remove(socket);
             ClientDisconnect(socket);
         };
         socket.OnMessage = message =>
         {
             //Console.WriteLine(message);
             // allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
             MessageRecived(socket, message);
         };
     });
 }
예제 #4
0
 private UseSocket(string Ip)
 {
     this._address = Ip;
     try
     {
         _Servier = new WebSocketServer(this._address);
         _Servier.Start(socket =>
         {
             socket.OnMessage = msg => {
                 Message(socket.GetPaarmiter(username), msg);
             };
             socket.OnOpen = () =>
             {
                 Open(socket);
             };
             socket.OnClose = () =>
             {
                 OnClose(socket);
             };
             socket.OnBinary = b =>
             {
                 BinaryMessage(socket.GetPaarmiter(username), b);
             };
         });
     }
     catch
     {
         throw new Exception("参数错误!来自UseSocket ,初始化失败");
     }
 }
        private void StartServer()
        {
            WebSocketServer server = new WebSocketServer(mLocation);

            mServer = server;
            server.SupportedSubProtocols = new[] { mBinding.Name };

            if (mCertificate != null)
            {
                server.Certificate = mCertificate;
            }

            if (mGetEnabledSslProtocols != null)
            {
                server.EnabledSslProtocols = mGetEnabledSslProtocols();
            }

            mServer.Start(connection =>
            {
                FleckWampTextConnection <TMessage> wampConnection =
                    new FleckWampTextConnection <TMessage>(connection,
                                                           mBinding);

                OnNewConnection(wampConnection);
            });
        }
예제 #6
0
        public async Task Initialize()
        {
            var input = string.Empty;

            _server = new WebSocketServer($"{Url}:{_port}");
            await Task.Run(() =>
                           _server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    _msgText.Show($"New client connected: {socket.ConnectionInfo.ClientIpAddress}");
                    ConnectedSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    _msgText.Show($"Client disconnected: {socket.ConnectionInfo.ClientIpAddress}");
                    ConnectedSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    _msgText.Show(message);
                    ConnectedSockets.ToList().ForEach(s => s.Send(message));
                };
            }));
        }
 public void StartServerClientSocket()
 {
     _webSocketServer.Start(connection =>
     {
         connection.OnOpen    = () => SocketClientOpened(connection);
         connection.OnBinary  = data => SocketMessage(connection, data);
         connection.OnClose   = () => SocketClientClosed(connection);
         connection.OnMessage = message => connection.Send(message);
     });;
 }
예제 #8
0
        public void Start(IWebSocketServer webSocketServer, Action onOpen, Action onClose)
        {
            var allSockets = new List <IWebSocketConnection>();

            webSocketServer.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    onOpen.Invoke();
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    onClose.Invoke();
                    _ = allSockets.Remove(socket);
                };
                socket.OnMessage = message => allSockets.ToList().ForEach(s => s.Send(message));
            });
        }
        public RemoteSessionSocketServer(Global global, IWebSocketServer server)
        {
            // websockets are not bound to an http context... the remote session manager must be retrieved from an application perspective
            _global = global;

            // logs
            FleckLog.Level     = LogLevel.Warn;
            FleckLog.LogAction = (level, message, ex) =>
            {
                switch (level)
                {
                case LogLevel.Debug:
                    Trace.TraceInformation(message, ex);
                    break;

                case LogLevel.Warn:
                    Trace.TraceWarning(message, ex);
                    break;

                case LogLevel.Error:
                    Trace.TraceError(message, ex);
                    break;

                default:
                    Trace.TraceInformation(message, ex);
                    break;
                }
            };

            // sockets
            _sockets     = new List <IWebSocketConnection>();
            _socketsLock = new object();

            // start sockets server
            server.Start(socket =>
            {
                socket.OnOpen    = () => { Open(socket); };
                socket.OnMessage = message => ProcessMessage(socket, message);
                socket.OnError   = exception => { Trace.TraceError("Websocket error {0}", exception); };
                socket.OnClose   = () => { Close(socket); };
            });
        }
예제 #10
0
        private UseSocket(string Ip)
        {
            this._address = Ip;

            _Servier = new WebSocketServer(this._address);
            _Servier.Start(socket =>
            {
                socket.OnMessage = msg => {
                    Message(socket.GetPaarmiter(username), msg);
                };
                socket.OnOpen = () =>
                {
                    Open(socket);
                };
                socket.OnClose = () =>
                {
                    OnClose(socket);
                };
                socket.OnBinary = b =>
                {
                    BinaryMessage(socket.GetPaarmiter(username), b);
                };
            });
        }
예제 #11
0
        public void Start(Action <IWampConnection> config)
        {
            _webSocketServer.Start(socket =>
            {
                if (socket == null)
                {
                    throw new ArgumentNullException("socket");
                }
                if (socket.ConnectionInfo == null)
                {
                    throw new ArgumentNullException("socket.ConnectionInfo");
                }
                if (!socket.ConnectionInfo.SubProtocol.Equals(WampSubProtocol))
                {
                    throw new ArgumentException("SubProtocol");
                }

                var connection = new WampConnection(socket, config);

                socket.OnOpen    = connection.OnOpen;
                socket.OnClose   = connection.OnClose;
                socket.OnMessage = msg => OnMessage(connection, msg);
            });
        }
예제 #12
0
        public WebSocketManager(string Host, uint Port)
        {
            string location = "ws://" + Host + ":" + Port;

            _webSocketServer = new WebSocketServer(location);
            FleckLog.Level   = LogLevel.Error;

            _webSocketClientManager  = new WebSocketClientManager();
            _webSocketHandlerManager = new WebSocketHandlerManager();

            _webSocketServer.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    var Uuid = Guid.NewGuid().ToString();
                    log.Info("Connection created -> " + socket.ConnectionInfo.ClientIpAddress + " (" + Uuid + ")");
                    var socketClient = new WebSocketClient(Uuid, socket);
                    _webSocketClientManager.RegisterSocketClient(socketClient);
                    socketClient.Send(new HeyHandler(Uuid));
                };

                socket.OnClose = () =>
                {
                    var socketClient = _webSocketClientManager.GetWebSocketClient(socket);
                    GameEnvironment.GetGameManager().DestroyGame(socketClient.Game);
                    log.Info("Connection destroyed -> " + socket.ConnectionInfo.ClientIpAddress + " (" + socketClient.Uuid + ")");
                    _webSocketClientManager.DeregisterSocketClient(socket);
                };
                socket.OnMessage = (message) =>
                {
                    try
                    {
                        var Payload = JsonConvert.DeserializeObject <MessageObject>(message);
                        if (Payload.Event == null)
                        {
                            throw new Exception("No event handler was passed.");
                        }

                        var Handler = _webSocketHandlerManager.GetIncomingEventHandler(Payload.Event);
                        if (Handler == null)
                        {
                            throw new Exception("No handler was found for specified identifier");
                        }

                        var SocketClient = _webSocketClientManager.GetWebSocketClient(socket);
                        if (SocketClient == null)
                        {
                            throw new Exception("No SocketClient instance was found for the socket connection");
                        }

                        LogMessage(SocketClient.Uuid, message);

                        Handler.Execute(SocketClient, Payload);
                    }
                    catch (Exception ex)
                    {
                        log.Error(ex);
                    }
                };
            });

            log.Info("WebSocketManager (" + location + ") -> LOADED!");
        }
예제 #13
0
 public void Start(Action <IWebSocketConnection> config)
 {
     _webSocketServer.Start(config);
 }
예제 #14
0
 public void Start() =>
 _webSocketServer.Start(IP, Port);
예제 #15
0
        //Initializes the web socket server that listens for incoming requests
        private static void InitializeWebSockets()
        {
            allSockets = new List<IWebSocketConnection>();
            server = new WebSocketServer(WEB_SOCKET_SERVICE_URL);

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Connection Opened");
                    offer = null;
                    allSockets.Add(socket);
                };

                socket.OnClose = () =>
                {
                    Console.WriteLine("Connection Closed!");
                    offer = null;
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    Console.WriteLine(message);
                    HandleMessage(message);
                };
            });
        }