public async Task Handle(SynchronizedObjectUpdatedNotification notification,
                                 CancellationToken cancellationToken)
        {
            var participantGroups = notification.Participants.Select(CoreHubGroups.OfParticipant);

            if (notification.PreviousValue == null)
            {
                var payload = new SyncObjPayload <object>(notification.SyncObjId, notification.Value);
                await _hubContext.Clients.Groups(participantGroups)
                .OnSynchronizeObjectState(payload, cancellationToken);
            }
            else
            {
                var patch = JsonPatchFactory.Create(notification.PreviousValue, notification.Value, JsonConfig.Default,
                                                    JsonPatchFactory.DefaultOptions);

                if (!patch.Operations.Any())
                {
                    return;
                }

                var payload = new SyncObjPayload <JsonPatchDocument>(notification.SyncObjId, patch);

                await _hubContext.Clients.Groups(participantGroups)
                .OnSynchronizedObjectUpdated(payload, cancellationToken);
            }
        }
Ejemplo n.º 2
0
 public static Task OnSynchronizedObjectUpdated(this IClientProxy clientProxy,
                                                SyncObjPayload <JsonPatchDocument> payload, CancellationToken token = default)
 {
     return(clientProxy.SendAsync(CoreHubMessages.OnSynchronizedObjectUpdated, payload, token));
 }
Ejemplo n.º 3
0
 public static Task OnSynchronizeObjectState(this IClientProxy clientProxy, SyncObjPayload <object> payload,
                                             CancellationToken token = default)
 {
     return(clientProxy.SendAsync(CoreHubMessages.OnSynchronizeObjectState, payload, token));
 }