Если вы начнете использовать user
атрибут o:socket
, как в примере
<o:socket channel="sess" scope="session" user="#{pushTestUser}" />
1) кажется возможным при использовании «идентификатора пользователя», как это видно на витрине
С http://showcase.omnifaces.org/push/socket:
@Inject @Push
private PushContext someChannel;
public void sendMessage(Object message, User recipientUser) {
Long recipientUserId = recipientUser.getId();
someChannel.send(message, recipientUserId);
}
В этом примере передайте User
, который является «примером» объекта, который может быть вашим или каким-либо другим. В витрине пользователю передается привязка идентификатора к полю ввода, но это может быть сделано и на стороне сервера. До вас
2) кажется возможным при отправке сообщений на общий канал или даже группы, как можно увидеть в http://showcase.omnifaces.org/push/socket.
@Inject @Push
private PushContext someChannel;
public void sendMessage(Object message, Group recipientGroup) {
Collection<Long> recipientUserIds = recipientGroup.getUserIds();
someChannel.send(message, recipientUserIds);
}
Группа представляет собой пример объекта, который может быть вашим собственным, его можно передать из «внешнего интерфейса» или просто прочитать где-нибудь в бэкэнде. Он просто должен содержать идентификаторы пользователей (могут быть сопоставлены направляющие, не обязательно должны быть внутренние идентификаторы пользователей), которые подписаны на канал. Все это только примеры методов.
Так что, на мой взгляд, оба варианта возможны.