Пример #1
0
 // called by InvokeRepeating
 private void AnnounceServer()
 {
     if (announcer.IsOpen)
     {
         var message = new MessageAnnouncement(announceMessage, localIP, serverName, port);
         announcer.Send(message.Pack().Serialize());
     }
     else
     {
         announcer.Open();
     }
 }
Пример #2
0
        private Task OnBroadcastData(MessageContainer obj)
        {
            Debug.Log("Received broadcast!");
            MessageAnnouncement message = MessageAnnouncement.Unpack(obj); // deserialize message

            // check if the announcement strings matches
            if (message != null && message.Message.Equals(AnnounceMessage))
            {
                if (Sessions.TryGetValue(message.IP, out SessionInfo sessionInfo) == false)
                {
                    // add to session list
                    Sessions.Add(message.IP, new SessionInfo()
                    {
                        SessionName = message.Name, SessionIp = message.IP, SessionPort = message.Port
                    });

                    // trigger event to notify about new session
                    SessionListChanged?.Invoke(this, EventArgs.Empty);
                }
            }

            return(Task.CompletedTask);
        }