private static void ClientRead(Server server, Client client, IPacket packet) { if (client.Value.IsFlooding()) client.Disconnect(); Type packetType = packet.GetType(); if (client.Value.Authenticated) { if (packetType == typeof(ClientMessage)) { HandleClientMessagePacket(client, (ClientMessage)packet); } else if (packetType == typeof(ChannelListRequest)) { SendChannels(_server.Clients); } else if (packetType == typeof(ChangeChannel)) { HandleChangeChannelPacket(client, (ChangeChannel)packet); } else if (packetType == typeof(Suggestion)) { HandleSuggestionPacket(client, (Suggestion)packet); } else if (packetType == typeof(PrivateMessagesRequest)) { HandlePrivateMessagesRequestPacket(client); } else if (packetType == typeof(KeepAlive)) { HandleKeepAlivePacket(client); } } else { if (packetType == typeof(Register)) { HandleRegisterPacket(client, (Register)packet); } else if (packetType == typeof(Login)) { HandleLoginPacket(client, (Login)packet); } } }
private static void Main(string[] args) { Accessor.ConnectionString = #if DEBUG //Debugging on your own computer, using your own MsSQL database. @"Data Source=Banksy-PC\SQLEXPRESS;Initial Catalog=aux2;Persist Security Info=True;User ID=auxilium;Password=123456"; #else //Release version, for your server's MsSQL database. @"Data Source=WIN-2OAHGBMYAML\SQLEXPRESS;Initial Catalog=aux2;User ID=auxilium;Password=123456"; #endif Channel[] channels = Accessor.GetChannels(); foreach (Channel channel in channels) _recentMessages.Add(channel.Id, new List<BroadcastMessage>()); _server = new Server { BufferSize = 8192, MaxConnections = 5000, SingleInstanceClients = true }; _server.AddTypesToSerializer(typeof(IPacket), new Type[] { typeof(Initialize), typeof(KeepAlive), typeof(Login), typeof(LoginResponse), typeof(Register), typeof(RegisterResponse), typeof(ChannelListRequest), typeof(ChannelList), typeof(ChangeChannel), typeof(ClientMessage), typeof(BroadcastMessage), typeof(Suggestion), typeof(SuggestionResponse), typeof(PrivateMessage), typeof(PrivateMessageCountRequest), typeof(PrivateMessagesRequest) }); _server.ClientRead += ClientRead; _server.ClientState += ClientState; _server.Listen(35); _chatMonitor = new System.Threading.Timer(Monitor, null, 1000, 240000); //240,000 = 4 Minutes Application.Run(); }
private static void ClientState(Server server, Client client, bool connected) { Console.WriteLine("{0}connected", connected ? "" : "dis"); if (connected) { client.Value = new UserState(); new Initialize(HashAlrogithm).Execute(client); } else { HandleClientDisconnected(client); client = null; } }