websocket 创建连接的时候有时候能成功,有时候报错。
前台报错:
Uncaught Error: Incompatibile SockJS! Main site uses: "1.1.1", the iframe: "1.0.0".
后台也报错:
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:124)
at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:172)
at org.apache.coyote.http11.InternalNioOutputBuffer.writeToSocket(InternalNioOutputBuffer.java:139)
at org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:197)
at org.apache.coyote.http11.InternalNioOutputBuffer.access$000(InternalNioOutputBuffer.java:41)
at org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer.java:320)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:118)
at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:256)
at org.apache.coyote.Response.doWrite(Response.java:491)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:391)
... 21 more
前端代码:
function connect() {
console.log("Connection status1 "+socket.readyState);
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log(frame);;
getParkStatus();
stompClient.subscribe('/topic/parkPlaceMonitor', function (feedback) {});
});
}
$(function () {
connect();
});
补充一个奇怪的地方,在connect()方法后调用一个alert("")方法以后这个问题就不会出现了。以前没怎么做过前端,还望有经验的朋友指导一下,谢谢!
环境:
sockjs 1.1.1
stomp 1.1
换了sockjs 0.3.4之后这个报错确实没有了,但是有了新的问题。