private void ProcessUdpTransferFrame(UdpTransferFrame frame)
        {
            this.UpdateKeepAlive();
            switch (frame.Type)
            {
            case FrameType.ClientPing:
                this.log.Debug($"[Client:{this.state.ClientId} => Server] PING");
                var cmdClientPing = new ClientPingMessage(frame.MessageBuffer);
                var now           = TimeSpan.FromTicks(DateTime.UtcNow.Ticks);
                var msgServerPong = new ServerPongMessage()
                {
                    ClientRequestTimestamp = cmdClientPing.ClientTimestamp, ClientResponseTimestamp = now, ServerTimestamp = now
                };
                this.SendFrameToClient(FrameType.ServerPong, msgServerPong.Serialize());
                break;

            case FrameType.ClientPong:
                this.log.Debug($"[Client:{this.state.ClientId} => Server] PONG");
                var msgClientPong = new ClientPongMessage(frame.MessageBuffer);
                this.CalculateClientLatency(msgClientPong);
                break;

            case FrameType.Message:
                this.reliableClientMessaging.ProcessMessageFrame(frame);
                break;
            }
        }
Exemple #2
0
        public void ActorMustNotAcceptMessagesWithoutAuthentication()
        {
            //setup
            var shardRegionObjectProbe = CreateTestProbe();
            var replyToProbe           = CreateTestProbe();
            var testeeRef         = Sys.ActorOf(Props.Create(() => new ClientTwinActor(defaultSocketProbe, defaultAuthenticationProbe, defaultEndpoint, shardRegionObjectProbe, defaultObjectRegionArea)));
            var clientPingMessage = new ClientPingMessage();

            //execute
            testeeRef.Tell(new UdpTransferFrame(FrameType.ClientPing, clientPingMessage.Serialize()));

            //verify
            shardRegionObjectProbe.ExpectNoMsg();
        }