我在Wildfly服务器上使用spring mvc 4.1.3构建了一个Web应用程序,该服务器实现了websocket服务器。大约几周前,一切都按预期工作。从那时起,我没有检查websocket连接。昨天我想检查应用程序的功能,突然间无法建立websocket连接。在我的案例中,客户端Chrome报告了以下错误消息
WebSocket connection to 'ws://127.0.0.1:8080/frontend/notificationws' failed: Error during WebSocket handshake: Unexpected response code: 200
Firefox报告了相同的错误消息,尽管服务器没有报告任何内容。我试图获得有关错误消息的任何进一步信息,但还没有运气。我观察到websocket服务器和客户端之间的消息交换与wireshark,但也没有运气。没有发现可疑的东西。
Websocket处理:
public class NotificationWs extends TextWebSocketHandler{
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
logger.info("Payload: " + message.getPayload());
}
}
自定义握手:
public class NotificationHandshakeInterceptor extends HttpSessionHandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest request,
ServerHttpResponse response, WebSocketHandler wsHandler,
Map<String, Object> attributes) throws Exception {
logger.info("Before Handshake");
return super.beforeHandshake(request, response, wsHandler, attributes);
}
@Override
public void afterHandshake(ServerHttpRequest request,
ServerHttpResponse response, WebSocketHandler wsHandler,
Exception ex) {
logger.info("After Handshake");
super.afterHandshake(request, response, wsHandler, ex);
}
}
Servlet环境中的配置:
<bean id="notificationWs" class="com.supo.frontend.websocket.notification.NotificationWs" />
<websocket:handlers>
<websocket:mapping path="/notificationws" handler="notificationWs"/>
<websocket:handshake-interceptors>
<bean class="com.supo.frontend.websocket.notification.NotificationHandshakeInterceptor"/>
</websocket:handshake-interceptors>
</websocket:handlers>
javascript:
...
var uri = "ws://" + (document.location.hostname) + ":" + "8080" + "/frontend/notificationws";
websocket = new WebSocket(uri);
...
我希望有足够的信息。我将不胜感激任何帮助。
更新:我查看了来自websocket onerror和onclose消息的事件消息。 onerror消息不包含任何有用的信息。 onclose消息抛出错误代码1006,这意味着&#34;连接异常关闭,例如,没有发送或接收关闭控制帧&#34;