Почему sockJS добавляет «/info» к заданному пути URL-адреса веб-сокета

Я хочу открыть порт веб-сокета с путем «webapp/socket.do». Когда я использую SockJS и пытаюсь инициировать вызов по коду

    var socket = new SockJS('/webapp/socket.do');
    stompClient = Stomp.over(socket);

    stompClient.connect({}, ...

SockJS по умолчанию добавит «/info» в конец заданного пути. Я хочу знать, почему? Можно ли это изменить или предотвратить?

При использовании этого с Spring MVC и сопоставлении шаблонов URL-адресов с DispatcherServlet, например < url-pattern >*.do</url-pattern>, это вернет ошибку 404. он заблокирован из-за строки «/info», добавленной sockJS к данному URL-адресу.

Код сопоставления сервлета Spring web.xml:

<servlet-mapping>
    <servlet-name>dispatch-servlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

Кто-нибудь знает, что там пытается использовать sockJS и почему?


person Lihkinisak    schedule 28.01.2016    source источник


Ответы (1)


Это часть протокола SockJS, и она обязательна. Эта конечная точка реализуется сервером и сообщает о возможностях сервера, таких как поддерживаемые протоколы. См. соответствующую часть протокола SockJS.

В этом случае, я думаю, вам нужно адаптировать отображение сервлета не только для этой конечной точки, но и для других запросов, которые могут поступать: запросы HTTP UPGRADE для веб-сокета, все остальные запросы для транспорты на основе HTTP, поддерживаемые SockJS.

person Brian Clozel    schedule 28.01.2016