private void InvokeHandlerSafely( Action <BroadcastingMessage> handler, BroadcastingMessage message ) { try { handler?.Invoke(message); } catch (Exception e) { Debug.LogException(e); } }
/// <summary> /// Sends a message into a channel /// </summary> /// <param name="channel"></param> /// <param name="message"></param> public void Send(SpecificChannel channel, BroadcastingMessage message) { string url = new Uri(serverUri, "send").ToString(); JsonValue serializedMessage = Serializer.ToJson <BroadcastingMessage>( message, SerializationContext.ServerToClient ); http.PendingRequest().Post(url, new JsonObject { ["environmentId"] = environmentId, ["broadcastingKey"] = broadcastingKey, ["channel"] = channel.ChannelName, ["message"] = serializedMessage }); }
/// <summary> /// Route a given message to the proper action /// </summary> /// <param name="message"></param> /// <exception cref="ArgumentNullException"></exception> public void RouteMessage(BroadcastingMessage message) { if (message == null) { throw new ArgumentNullException(); } Type type = message.GetType(); if (rules.ContainsKey(type)) { rules[type].Invoke(message); } else { defaultAction?.Invoke(message); } }
private void RouteMessage(string channel, BroadcastingMessage message) { foreach (var pair in activeSubscriptions) { if (pair.Key.ChannelName == channel) { InvokeHandlerSafely(pair.Value, message); } } foreach (var pair in pendingSubscriptions) { if (pair.Key.ChannelName == channel) { pair.Value.pendingMessages.Enqueue(message); CheckPendingSubscriptionExpiration(pair.Key); } } }
/// <summary> /// Sends a message into this channel /// </summary> /// <param name="message"></param> public void Send(BroadcastingMessage message) { Broadcast.GetBroadcaster().Send(this, message); }