displayName
не является установленным вами свойством, оно отправляется сервером, чтобы определить, какие пользователи присоединяются / покидают каналы, на которые вы подписаны. Он будет содержать либо UserName
пользователя, либо, если ваш поставщик аутентификации не использует имена пользователей (например, вместо этого использует адрес электронной почты или идентификационный номер), он будет использовать свойство DisplayName
сеанса пользователей.
Вы необходимо зарегистрировать обработчики событий в вашем клиенте событий сервера перед вызовом .start()
, например, используя TypeScript ServerEventsClient :
const channels = ["home"];
const client = new ServerEventsClient("/", channels, {
handlers: {
onConnect: (sub:ServerEventConnect) => { // Successful SSE connection
console.log("You've connected! welcome " + sub.displayName);
},
onJoin: (msg:ServerEventJoin) => { // User has joined subscribed channel
console.log("Welcome, " + msg.displayName);
},
onLeave: (msg:ServerEventLeave) => { // User has left subscribed channel
console.log(msg.displayName + " has left the building");
},
}).start();
Только после того, как вы начали подписка и подписка на ваш канал, вы будете получать какие-либо события.
Подписчики канала
Большинство клиентов событий сервера также позволяют вам получить список пользователей, например, с клиентом TypeScript вы можете позвонить getChannelSubscribers()
:
client.getChannelSubscribers()
.then(users => users.forEach(x =>
console.log(`#${x.userId} @${x.displayName} ${x.profileUrl} ${x.channels}`)));
В качестве альтернативы вы можете позвонить /event-subscribers
напрямую, чтобы получить список пользователей в каждом канале, например:
$.getJSON("/event-subscribers?channels={{ channels }}", function (users) {
});
Пример чата
Для Для справки существует ряд простых приложений, написанных на разных языках, в которых для создания простого приложения чата используются разные клиенты событий сервера: