// 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(); } }
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); }