示例#1
0
        public static void Subscribe(Guid connectionId, string channel, string group)
        {
            lock (((IDictionary) Subscribers).SyncRoot)
            {
                var subscription = new Subscription(channel, @group);
                if (!Subscribers.ContainsKey(subscription))
                {
                    Subscribers[subscription] = new List<Guid>();
                }

                Subscribers[subscription].Add(connectionId);
            }
        }
示例#2
0
 public static void Publish(Message message)
 {
     lock (((IDictionary)Subscribers).SyncRoot)
     {
         List<Guid> subscribingConnections;
         var subscription = new Subscription(message.Channel, message.Group);
         if (Subscribers.TryGetValue(subscription, out subscribingConnections))
         {
             foreach (var connection in subscribingConnections)
             {
                 AddToMessageQueue(connection, message);
             }
         }
     }
 }
示例#3
0
 public static void Unsubscribe(Guid connectionId, string channel, string group)
 {
     lock (((IDictionary)Subscribers).SyncRoot)
     {
         var subscription = new Subscription(channel, @group);
         if (Subscribers.ContainsKey(subscription))
         {
             Subscribers[subscription].Remove(connectionId);
         }
     }
 }