public ClientSession(INetworkClient client)
{
// set last received
lastPacketReceive = DateTime.Now.Ticks;
// lag mode
_random = new Random((int)client.ClientId);
// initialize lagging mode
bool isLagMode = System.Configuration.ConfigurationManager.AppSettings["LagMode"].ToLower() == "true";
// initialize network client
_client = client;
// absolutely new instantiated Client has no SessionId
SessionId = 0;
// register for NetworkClient events
_client.MessageReceived += OnNetworkClientMessageReceived;
// start observer for receiving packets
_receiveQueue = new ConcurrentQueue<byte[]>();
_receiveQueueObservable = Observable.Interval(new TimeSpan(0, 0, 0, 0, (isLagMode ? 1000 : 10)))
.Subscribe(x => HandlePackets());
}