private static Task OnMessageEvent(object sender, TcpMessageServerAuthEventArgs <Guid> args) { switch (args.MessageEventType) { case MessageEventType.Sent: break; case MessageEventType.Receive: Console.WriteLine(args.MessageEventType + ": " + args.Packet.Data); break; default: break; } return(Task.CompletedTask); }
protected virtual void OnMessageEvent(object sender, TcpMessageServerAuthEventArgs <T> args) { switch (args.MessageEventType) { case MessageEventType.Sent: break; case MessageEventType.Receive: try { if (_connectionsUnregistered.TryRemove(args.Connection.Client.GetHashCode(), out var tcpClient)) { // Register the connection if it is new var registerDTO = JsonConvert.DeserializeObject <Register>(args.Packet.Data); switch (registerDTO.RegisterType) { case RegisterType.Service: _connectionsToServices.Enqueue(args.Connection); break; case RegisterType.Provider: _connectionsToProviders.Add(args.Connection); break; default: break; } } else { // When a Provider sends a message to the cache, round-robin send it to the processing server var deserialized = JsonConvert.DeserializeObject <Message>(args.Packet.Data); switch (deserialized.MessageType) { case MessageType.FromProvider: if (_connectionsToServices.TryDequeue(out var connectionService)) { _connectionsToServices.Enqueue(connectionService); Task.Run(async() => { await _server.SendToConnectionAsync(args.Packet, connectionService); }); } break; case MessageType.FromService: foreach (var connectionToProvider in _connectionsToProviders) { Task.Run(async() => { await _server.SendToConnectionAsync(args.Packet, connectionToProvider); }); } break; default: break; } } } catch { } break; default: break; } }