public void SendToAllTest() { // listen NetworkServer.Listen(1); Assert.That(NetworkServer.connections.Count, Is.EqualTo(0)); // add connection LocalConnectionToClient connection = new LocalConnectionToClient(); connection.connectionToServer = new LocalConnectionToServer(); // set a client handler int called = 0; connection.connectionToServer.SetHandlers(new Dictionary <ushort, NetworkMessageDelegate>() { { MessagePacking.GetId <TestMessage1>(), ((conn, reader, channelId) => ++ called) } }); NetworkServer.AddConnection(connection); // create a message TestMessage1 message = new TestMessage1 { IntValue = 1, DoubleValue = 2, StringValue = "3" }; // send it to all NetworkServer.SendToAll(message); // update local connection once so that the incoming queue is processed connection.connectionToServer.Update(); // was it send to and handled by the connection? Assert.That(called, Is.EqualTo(1)); }
public void SendToClientOfPlayer() { // message handlers NetworkServer.RegisterHandler <ConnectMessage>((conn, msg) => { }, false); NetworkServer.RegisterHandler <DisconnectMessage>((conn, msg) => { }, false); NetworkServer.RegisterHandler <ErrorMessage>((conn, msg) => { }, false); // listen NetworkServer.Listen(1); Assert.That(NetworkServer.connections.Count, Is.EqualTo(0)); // add connection ULocalConnectionToClient connection = new ULocalConnectionToClient(); connection.connectionToServer = new ULocalConnectionToServer(); // set a client handler int called = 0; connection.connectionToServer.SetHandlers(new Dictionary <int, NetworkMessageDelegate>() { { MessagePacker.GetId <TestMessage1>(), ((conn, reader, channelId) => ++ called) } }); NetworkServer.AddConnection(connection); // create a message TestMessage1 message = new TestMessage1 { IntValue = 1, DoubleValue = 2, StringValue = "3" }; // create a gameobject and networkidentity NetworkIdentity identity = new GameObject().AddComponent <NetworkIdentity>(); identity.connectionToClient = connection; // send it to that player NetworkServer.SendToClientOfPlayer(identity, message); // update local connection once so that the incoming queue is processed connection.connectionToServer.Update(); // was it send to and handled by the connection? Assert.That(called, Is.EqualTo(1)); // clean up NetworkServer.Shutdown(); // destroy GO after shutdown, otherwise isServer is true in OnDestroy and it tries to call // GameObject.Destroy (but we need DestroyImmediate in Editor) GameObject.DestroyImmediate(identity.gameObject); }
public void OnDataReceivedTest() { // message handlers NetworkServer.RegisterHandler <ConnectMessage>((conn, msg) => { }, false); NetworkServer.RegisterHandler <DisconnectMessage>((conn, msg) => { }, false); NetworkServer.RegisterHandler <ErrorMessage>((conn, msg) => { }, false); // add one custom message handler bool wasReceived = false; NetworkConnection connectionReceived = null; TestMessage1 messageReceived = new TestMessage1(); NetworkServer.RegisterHandler <TestMessage1>((conn, msg) => { wasReceived = true; connectionReceived = conn; messageReceived = msg; }, false); // listen NetworkServer.Listen(1); Assert.That(NetworkServer.connections.Count, Is.EqualTo(0)); // add a connection NetworkConnectionToClient connection = new NetworkConnectionToClient(42); NetworkServer.AddConnection(connection); Assert.That(NetworkServer.connections.Count, Is.EqualTo(1)); // serialize a test message into an arraysegment TestMessage1 testMessage = new TestMessage1 { IntValue = 13, DoubleValue = 14, StringValue = "15" }; NetworkWriter writer = new NetworkWriter(); MessagePacker.Pack(testMessage, writer); ArraySegment <byte> segment = writer.ToArraySegment(); // call transport.OnDataReceived // -> should call NetworkServer.OnDataReceived // -> conn.TransportReceive // -> Handler(CommandMessage) Transport.activeTransport.OnServerDataReceived.Invoke(42, segment, 0); // was our message handler called now? Assert.That(wasReceived, Is.True); Assert.That(connectionReceived, Is.EqualTo(connection)); Assert.That(messageReceived, Is.EqualTo(testMessage)); }
public void SendToClientOfPlayer() { // listen NetworkServer.Listen(1); Assert.That(NetworkServer.connections.Count, Is.EqualTo(0)); // setup connections LocalConnectionToClient connectionToClient = new LocalConnectionToClient(); LocalConnectionToServer connectionToServer = new LocalConnectionToServer(); connectionToClient.connectionToServer = new LocalConnectionToServer(); // setup NetworkServer/Client connections so messages are handled NetworkClient.connection = connectionToServer; NetworkServer.connections[connectionToClient.connectionId] = connectionToClient; // set a client handler int called = 0; void Handler(TestMessage1 _) => ++ called; NetworkClient.RegisterHandler <TestMessage1>(Handler, false); NetworkServer.AddConnection(connectionToClient); // create a message TestMessage1 message = new TestMessage1 { IntValue = 1, DoubleValue = 2, StringValue = "3" }; // create a gameobject and networkidentity CreateNetworked(out GameObject _, out NetworkIdentity identity); identity.connectionToClient = connectionToClient; // send it to that player identity.connectionToClient.Send(message); // update local connection once so that the incoming queue is processed connectionToClient.connectionToServer.Update(); // was it send to and handled by the connection? Assert.That(called, Is.EqualTo(1)); // clean up NetworkServer.Shutdown(); }
public void OnDataReceivedInvalidConnectionIdTest() { // message handlers NetworkServer.RegisterHandler <ConnectMessage>((conn, msg) => { }, false); NetworkServer.RegisterHandler <DisconnectMessage>((conn, msg) => { }, false); NetworkServer.RegisterHandler <ErrorMessage>((conn, msg) => { }, false); // add one custom message handler bool wasReceived = false; NetworkConnection connectionReceived = null; TestMessage1 messageReceived = new TestMessage1(); NetworkServer.RegisterHandler <TestMessage1>((conn, msg) => { wasReceived = true; connectionReceived = conn; messageReceived = msg; }, false); // listen NetworkServer.Listen(1); Assert.That(NetworkServer.connections.Count, Is.EqualTo(0)); // serialize a test message into an arraysegment TestMessage1 testMessage = new TestMessage1 { IntValue = 13, DoubleValue = 14, StringValue = "15" }; NetworkWriter writer = new NetworkWriter(); MessagePacker.Pack(testMessage, writer); ArraySegment <byte> segment = writer.ToArraySegment(); // call transport.OnDataReceived with an invalid connectionId // an error log is expected. LogAssert.ignoreFailingMessages = true; Transport.activeTransport.OnServerDataReceived.Invoke(42, segment, 0); LogAssert.ignoreFailingMessages = false; // message handler should never be called Assert.That(wasReceived, Is.False); Assert.That(connectionReceived, Is.Null); }