public Task <bool> Verify(INetworkingClientPool networkingClientPool, ManagedWebSocket webSocket, string token,
                           out INetworkingClient client)
 {
     if (!networkingClientPool.TryGet(token, out client))
     {
         return(Task.FromResult(false));
     }
     //TODO: check if already has websocket ect. client.WebSocket
     webSocket.Extra[ClientExtra] = client;
     return(Task.FromResult(true));
 }
Пример #2
0
 public NetworkingModule(string ip, int port, IIdProvider <ulong> idProvider,
                         INetworkingEntityFactory entityFactory,
                         IIdProvider <string> tokenProvider, INetworkingClientFactory clientFactory,
                         IAuthenticationProviderFactory authenticationProviderFactory,
                         IStreamingHandlerFactory streamingHandlerFactory)
 {
     IdProvider    = idProvider;
     TokenProvider = tokenProvider;
     EntityPool    = new NetworkingEntityPool(idProvider, entityFactory);
     ClientPool    = new NetworkingClientPool(tokenProvider, clientFactory);
     Streamer      = new EntityStreamer();
     Server        = new Server(ip, port, ClientPool, authenticationProviderFactory, Streamer, streamingHandlerFactory);
 }
Пример #3
0
        public Server(string ip, int port, INetworkingClientPool networkingClientPool, IAuthenticationProviderFactory authenticationProviderFactory, IEntityStreamer streamer,
                      IStreamingHandlerFactory factory)
        {
            var webSocket = new WebSocket();
            var authenticationProvider = authenticationProviderFactory.Create(ip, port, webSocket);
            var streamingHandler       = factory.Create(networkingClientPool, authenticationProvider);

            StreamingHandler                  = streamingHandler;
            webSocket.OnMessageReceived       = streamingHandler.OnMessage;
            webSocket.OnError                 = authenticationProvider.OnError;
            webSocket.OnConnectionEstablished = authenticationProvider.OnConnectionEstablished;
            webSocket.OnConnectionBroken      = authenticationProvider.OnConnectionBroken;
            webSocket.StartListen(port);
        }
        public Task <bool> Verify(INetworkingClientPool networkingClientPool, ManagedWebSocket managedWebSocket,
                                  string token, out INetworkingClient client)
        {
            if (networkingClientPool.TryGet(token, out client))
            {
                //managedWebSocket.Extra.TryAdd("client", client);

                /*if (client.WebSocket != managedWebSocket)
                 * {
                 *  webSocket.CloseWebSocket(client.WebSocket);
                 * }
                 *
                 * client.WebSocket = managedWebSocket;*/
                //return Task.FromResult(true);
                networkingClientPool.Remove(client);
                //TODO: maybe try to reuse clients later when client can send if it was a reconnect or new connection in auth event
            }

            client           = AltNetworking.CreateClient(token);
            client.WebSocket = managedWebSocket; //TODO: maybe do that automatically, but we would lost freedom
            managedWebSocket.Extra.TryAdd("client", client);
            return(Task.FromResult(true));
        }
 public ClientEntityStreamingHandler(INetworkingClientPool networkingClientPool,
                                     IAuthenticationProvider authenticationProvider)
 {
     this.networkingClientPool   = networkingClientPool;
     this.authenticationProvider = authenticationProvider;
 }
 public IStreamingHandler Create(INetworkingClientPool networkingClientPool, IAuthenticationProvider authenticationProvider)
 {
     return(new ClientEntityStreamingHandler(networkingClientPool, authenticationProvider));
 }