Как обновить несколько пользователей на сервере Blazor? - PullRequest
2 голосов
/ 11 января 2020

Предположим, мне нужен пользовательский интерфейс, в котором пользователи в группе имеют синхронизированное представление. Представьте себе приложение группового чата, в котором все участники группы должны видеть одни и те же сообщения.

Когда пользователь отправляет сообщение в группу, его должна получить вся группа.

С JS, я мог бы использовать группы SignalR, и внешний интерфейс должен генерировать событие SignalR с сообщением, опубликованным. Затем серверный концентратор отправит это сообщение группе.

На сервере Blazor, поскольку все пользовательские состояния уже находятся на сервере, как мне координировать обновление пользовательского интерфейса групп пользователей? на Blazor?

1 Ответ

1 голос
/ 04 марта 2020

Я пытался добиться чего-то подобного. Через некоторое время я обнаружил способ сделать это. Ответ Кайла помог мне разобраться в этом.

Вы должны создать класс, давайте назовем Messenger , который имеет свойство Action, и метод, который вызывает это действие, однажды под названием

* 1006. *

В компоненте бритвы введите Messenger. Кроме того, вы должны установить событие в свойстве OnMessage, а затем вызвать StateHasChanged, чтобы сообщить представлению о том, что оно может обновляться

@inject Messenger messenger
// rest of component here, and then the code block 
protected override async Task OnInitializedAsync()
{
  messenger.OnMessage += () =>
  {
    // do something with the messenger.Text here
    InvokeAsync(this.StateHasChanged);
  };
}

Не забудьте, что в вашем классе запуска добавьте класс Messenger как синглтон для того, чтобы он был доступен для инъекций

services.AddSingleton<Messenger>();

Я надеюсь, что это то, чего вы пытались достичь, и это может помочь другим. Приветствия.

...