@ServerEndpoint("/websocket/blah")
public class LeadChangeWebsocketEndpoint {
@Inject
private SessionScopedBean bean;
@OnOpen
public void onOpen(Session session) {
bean.takeWebsocketAndDoSomething(session);
}
//....
}
Этот код приводит к исключению. Как связать веб-сокет с сеансом пользователя? Я не могу найти какую-либо документацию, явно указывающую, что такое область CDI для @ServerEndpoint
bean-компонента, даже несмотря на то, что он способен получать инъекции CDI.
onOpen
HTTP-запрос все еще активен со всеми его файлами cookie, токенами и т. д. Это время, чтобы аутентифицировать пользователя или отказаться от соединения... тем более, что (на некоторых серверах) обратный вызовonMessage
может быть вызван, покаonOpen
все еще обрабатывается... Я не очень разбираюсь в Java, поэтому я не знаю, как вы примените это (я могу показать вам на Ruby, но это мало поможет). - person Myst   schedule 27.07.2015