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)); }
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); }
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)); }