public FizzySteamyMirror() { // dispatch the events from the server server.OnConnected += (id) => OnServerConnect?.Invoke(id); server.OnDisconnected += (id) => OnServerDisconnect?.Invoke(id); server.OnReceivedData += (id, data) => OnServerData?.Invoke(id, data); server.OnReceivedError += (id, exception) => OnServerError?.Invoke(id, exception); // dispatch events from the client client.OnConnected += () => OnClientConnect?.Invoke(); client.OnDisconnected += () => OnClientDisconnect?.Invoke(); client.OnReceivedData += (data) => OnClientData?.Invoke(data); client.OnReceivedError += (exception) => OnClientError?.Invoke(exception); Debug.Log("FizzySteamyMirror initialized!"); }
/// <summary> /// Method is called on each update to check for new messages /// </summary> private void ReadNetwork() { NetIncomingMessage msg; while ((msg = Server.ReadMessage()) != null) { switch (msg.MessageType) { case NetIncomingMessageType.DiscoveryRequest: OnDiscoveryRequest(msg); break; case NetIncomingMessageType.StatusChanged: if ((NetConnectionStatus)msg.ReadByte() == NetConnectionStatus.RespondedConnect) { OnConnect(); } break; case NetIncomingMessageType.VerboseDebugMessage: case NetIncomingMessageType.DebugMessage: case NetIncomingMessageType.WarningMessage: case NetIncomingMessageType.ErrorMessage: Console.WriteLine(msg.ReadString()); break; case NetIncomingMessageType.Data: //the first four bytes in each message contain the type var info = (NetworkMessageType)msg.ReadByte(); //notify everyone who wanted to be notified upon message arrival OnServerData?.Invoke(Server, new NetworkEventArgs(msg, info)); break; default: Console.WriteLine("Unhandled type: " + msg.MessageType); break; } Server.Recycle(msg); } }