/// <summary> /// Sends a message to all connections subscribed to the specified signal. An example of signal may be a /// specific connection id, or fully qualified group name (Use <see cref="IGroupManager"/> to manipulate groups). /// </summary> /// <param name="connection">The connection</param> /// <param name="signal">The signal to send to.</param> /// <param name="value">The value to publish.</param> /// <param name="exclude">The list of connection ids to exclude</param> /// <returns>A task that represents when the broadcast is complete.</returns> public static Task Send(this IConnection connection, string signal, object value, params string[] exclude) { var message = new ConnectionMessage(signal, value) { ExcludedSignals = exclude }; return connection.Send(message); }
/// <summary> /// Sends a value to the specified group. /// </summary> /// <param name="groupName">The name of the group.</param> /// <param name="value">The value to send.</param> /// <returns>A task that represents when send is complete.</returns> public Task Send(string groupName, object value, params string[] exclude) { var qualifiedName = CreateQualifiedName(groupName); var message = new ConnectionMessage(qualifiedName, value) { ExcludedSignals = exclude }; return _connection.Send(message); }
public Task Send(ConnectionMessage message) { Message busMessage = CreateMessage(message.Signal, message.Value); if (message.ExcludedSignals != null) { busMessage.Filter = String.Join("|", message.ExcludedSignals); } _counters.ConnectionMessagesSentTotal.Increment(); _counters.ConnectionMessagesSentPerSec.Increment(); if (busMessage.WaitForAck) { Task ackTask = _ackHandler.CreateAck(busMessage.CommandId); return _bus.Publish(busMessage).Then(task => task, ackTask); } return _bus.Publish(busMessage); }