В нашем ядре. Net и Angular 8 мы реализовали SignalR. Нам нужны уведомления в реальном времени о различных событиях.
События (в нашем приложении) - это динамически создаваемый элемент. (День рождения, юбилей и др. c)
Допустим, пользователи могут открыть любое событие. И несколько опросов и чатов в процессе. Всякий раз, когда пользователи изменяют что-либо в событии, мне нужно уведомить других клиентов, которые открыли то же самое событие.
В настоящее время уведомление от всех событий распространяется на всех клиентов (независимо от событий, которые они открыли)
public class NotificationHub : Hub {
public async Task UpdateVote(int eventId, int pollId, int pollOptionId)
{
await Clients.Others.SendAsync("VoteUpdated", eventId, pollId, pollOptionId);
}
}
Angular:
private CreateConnection() {
this._hubConnection = new HubConnectionBuilder()
.withUrl(environment.base + 'NotificationHub')
.build();
}
private StartConnection(): void {
this._hubConnection
.start()
.then(() => {
this.connectionIsEstablished = true;
console.log('Hub connection started');
this.connectionEstablished.emit(true);
})
.catch(err => {
console.log('Error while establishing connection, retrying...');
setTimeout(function () { this.StartConnection(); }, 5000);
});
}
UpdateVote(eventId, pollId, pollOptionId) {
this._hubConnection.invoke('UpdateVote', eventId, pollId, pollOptionId);
}
private RegisterOnServerEvents(): void {
this._hubConnection.on('VoteUpdated', (eventId, pollId, pollOptionId) => {
this.VoteUpdated.emit({ eventId, pollId, pollOptionId });
});
}
I открываю соединение при загрузке сайта.
Что мне нужно реализовать, чтобы клиенты были уведомлены только о событиях, которые они открыли?