Конечная точка Websocket возвращает 404

Я новичок в принципе веб-сокета Java EE 7.

У меня есть сервер Java EE 7, развернутый на Wildfly 10.

Я настроил контекстный путь и путь к приложению. Я могу связаться с сервером через http://localhost:8080/context_path/app_path/something.

Теперь я объявил простую ServerEndpoint:

@Stateful
@ServerEndpoint("websockets/stream")
public class StreamServerEndpoint {

    private static final Logger LOG = Logger.getLogger(StreamServerEndpoint.class);

    @Inject
    ByteBufferStore byteBufferStore;

    @Inject
    private EventListener listener;

    @OnOpen
    public void open(Session session) {
        LOG.info("Session opened and registered");
        listener.register(session);
    }

    @OnMessage
    public void message(Session session, ByteBuffer buffer) {
        LOG.info("Message retrieved");
        session.getUserProperties().put("buffer", buffer);
        //byteBufferStore.retrieve().ifPresent(byteBuffer -> Common.sendBuffer(session, buffer));
    }

    @OnClose
    public void close(Session session) {
        listener.unregister(session);
    }
}

С другой стороны, у меня есть внешний проект Angular 2, который должен подключаться к веб-сокету, но я получаю коды ошибок: 404, 200, в зависимости от ссылки.

Я получаю 200 с этим:

ws://localhost:8080 

Я получаю 404 (рукопожатие невозможно) с этим:

ws://localhost:8080/context_path/app_path/websockets/stream  

Что я могу сделать, чтобы добраться до веб-сокета? Очевидно, мой URL-адрес неверен, или способ, которым я запрограммировал конечную точку сервера, совершенно неверен.


person cayz    schedule 17.08.2017    source источник
comment
Ну, 404 не найдено, нет возможности рукопожатия. Можете ли вы подключиться к серверу с помощью другого клиента веб-сокета?   -  person Evan Knowles    schedule 17.08.2017
comment
К сожалению, нет, запросы от разных клиентов веб-сокетов не доходят до сервера.   -  person cayz    schedule 17.08.2017
comment
пожалуйста, обратитесь к приведенному ниже URL-адресу для запуска примеров .javacodegeeks.com/core-java/ coderwall.com/p /uhqeqg/html5-websocket-with-angularjs   -  person jeetendra Mandal    schedule 17.08.2017


Ответы (2)


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

<enable-websockets>true</enable-websockets>

под узлом jboss-web вашего jboss-web.xml

person Evan Knowles    schedule 17.08.2017

Я нашел решение. Плохо, WebSocket был не в том модуле (ejb). Перемещение класса в веб-модуль решило проблему.

person cayz    schedule 08.09.2017
comment
Вы имеете в виду, что у нас не может быть веб-сокета в модуле ejb? а у нас это могло быть только в боевом модуле? - person Hosein Aqajani; 06.09.2020