我们正在尝试使用Spring Framework WebSocket支持公开sockjs端点。
这是服务器端的配置,其中Jersey正在管理路由:
问题在于我们无法访问
这是服务器端的配置,其中Jersey正在管理路由:
@Configuration
@EnableWebSocket
public class WebSocketConfig extends WebSocketMessageBrokerConfigurationSupport {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/sockjs").withSockJS()
.setStreamBytesLimit(512 * 1024)
.setHttpMessageCacheSize(1000)
.setDisconnectDelay(30 * 1000);
}
}
问题在于我们无法访问
/sockjs
,客户端代码如下:List<Transport> transports = new ArrayList<>(2);
transports.add(new WebSocketTransport(new StandardWebSocketClient()));
transports.add(new RestTemplateXhrTransport());
SockJsClient sockJsClient = new SockJsClient(transports);
sockJsClient.doHandshake(new MyHandler(), "ws://localhost:8080/sockjs");
(这段代码来源于spring websockets教程)
相同包中的其他资源会在root/api/server
下进行配置,即使/sockjs
和/root/api/server/sockjs
都无法访问。
web.xml
中,我们配置了以下内容:<servlet-mapping><servlet-name>Jersey Web Application</servlet-name><url-pattern>/api/*</url-pattern></servlet-mapping>
我们还在 tomcat webapp 配置中设置了/root
前缀。 与该包相同的资源定义了路径/server
。 - Noam