Exemplo n.º 1
0
        private void SetupService(WebSocketServer server)
        {
            server.AddWebSocketService <WsService>("/msf", (service) =>
            {
                service.IgnoreExtensions = true;
                service.SetServerSocket(this);
                var peer = new PeerWsServer(service);

                service.OnMessageEvent += (data) =>
                {
                    peer.HandleDataReceived(data, 0);
                };

                ExecuteOnUpdate(() =>
                {
                    MstTimer.Instance.StartCoroutine(peer.SendDelayedMessages(initialSendMessageDelayTime));
                    OnPeerConnectedEvent?.Invoke(peer);
                });

                peer.OnPeerDisconnectedEvent += OnPeerDisconnectedEvent;

                service.OnCloseEvent += reason =>
                {
                    peer.NotifyDisconnectEvent();
                };

                service.OnErrorEvent += reason =>
                {
                    Logs.Error(reason);
                    peer.NotifyDisconnectEvent();
                };
            });

            server.AddWebSocketService <EchoService>("/echo");
        }
Exemplo n.º 2
0
        private void OnPeerConnectedEventHandle(IPeer peer)
        {
            // Check if max number of connections has been reached
            if (maxConnections > 0 && connectedPeers.Count >= maxConnections)
            {
                peer.Disconnect("The max number of connections has been reached");
                return;
            }

            logger.Debug($"Client {peer.Id} connected to server. Total clients are: {connectedPeers.Count + 1}");

            // Listen to messages
            peer.OnMessageReceivedEvent += OnMessageReceived;

            // Save the peer
            connectedPeers[peer.Id] = peer;

            // Create the security extension
            var extension = peer.AddExtension(new SecurityInfoPeerExtension());

            // Set default permission level
            extension.PermissionLevel = 0;

            // Create a unique peer guid
            extension.UniqueGuid = Guid.NewGuid();
            peersByGuidLookup[extension.UniqueGuid] = peer;

            // Invoke the event
            OnPeerConnectedEvent?.Invoke(peer);
            OnPeerConnected(peer);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Setup all services used by server
        /// </summary>
        /// <param name="server"></param>
        private void SetupService(WebSocketServer server)
        {
            // Master server service
            server.AddWebSocketService <WsService>($"/app/{ApplicationKey}", (serviceForPeer) =>
            {
                serviceForPeer.IgnoreExtensions = true;
                serviceForPeer.SetServerSocket(this);

                var peer = new WsServerPeer(serviceForPeer);

                serviceForPeer.OnOpenEvent += () =>
                {
                    Logs.Debug($"Connection for peer [{peer.Id}] is open");
                };

                serviceForPeer.OnMessageEvent += (data) =>
                {
                    peer.HandleDataReceived(data);
                };

                ExecuteOnUpdate(() =>
                {
                    //MstTimer.Instance.StartCoroutine(peer.SendDelayedMessages(initialSendMessageDelayTime));
                    OnPeerConnectedEvent?.Invoke(peer);
                });

                serviceForPeer.OnCloseEvent += reason =>
                {
                    OnPeerDisconnectedEvent?.Invoke(peer);
                    peer.NotifyDisconnectEvent();
                };

                serviceForPeer.OnErrorEvent += reason =>
                {
                    Logs.Error(reason);
                    peer.NotifyDisconnectEvent();
                };
            });

            // Echo test service
            server.AddWebSocketService <EchoService>("/echo");
        }
        private void OnConnectedEventHandle(IPeer peer)
        {
            logger.Debug($"Client {peer.Id} connected to server. Total clients are: {connectedPeers.Count + 1}");

            // Listen to messages
            peer.OnMessageReceivedEvent += OnMessageReceived;

            // Save the peer
            connectedPeers[peer.Id] = peer;

            // Create the security extension
            var extension = peer.AddExtension(new SecurityInfoPeerExtension());

            // Set default permission level
            extension.PermissionLevel = 0;

            // Create a unique peer guid
            extension.UniqueGuid = Guid.NewGuid();
            peersByGuidLookup[extension.UniqueGuid] = peer;

            // Invoke the event
            OnPeerConnectedEvent?.Invoke(peer);
            OnPeerConnected(peer);
        }