private static void Handshake(NetworkGameClient client) { GameMessage hello = client.WaitReceive(); if (hello.ContentType != typeof(HandshakeEvent)) { throw new Exception("client expected handshake"); } HandshakeEvent handshake = hello.DeserializeContent <HandshakeEvent>(); string handshakeMessage = handshake.HandshakeMessage; // send it back to server to ack client.Send(new GameMessage(new HandshakeEvent(handshakeMessage))); Debug.Log("Handshake complete."); }
public void GameMessageIsSerializable() { AEvent source = new PlayerDrawCardEvent(Player.Player2); GameMessage gameMessage = new GameMessage(source); // even though our reference is the abstract type, we should still know the derived Assert.Equal(typeof(PlayerDrawCardEvent), gameMessage.ContentType); string serializedMessage = Util.Json.Serialize(gameMessage); GameMessage deserializedMessage = Util.Json.Deserialize <GameMessage>(serializedMessage); // upon deserialization, the content type should still be known Assert.Equal(typeof(PlayerDrawCardEvent), deserializedMessage.ContentType); PlayerDrawCardEvent sourceCast = source as PlayerDrawCardEvent; PlayerDrawCardEvent deserialized = deserializedMessage.DeserializeContent <PlayerDrawCardEvent>(); Assert.Equal(sourceCast.Player, deserialized.Player); }
private static void Handshake(NetworkGameServer server) { string guid = Guid.NewGuid().ToString(); var handshake = new HandshakeEvent(guid); server.Send(new GameMessage(handshake)); GameMessage received = server.Receive(); if (received.ContentType != typeof(HandshakeEvent)) { throw new Exception("server expected handshake."); } HandshakeEvent internalEvent = received.DeserializeContent <HandshakeEvent>(); if (internalEvent.HandshakeMessage != guid) { throw new Exception($"The client did not respond with the expected handshake message. Expected: {guid}\nSaw: {internalEvent.HandshakeMessage}"); } Debug.Log("Handshake succeeded."); }