websocket 连接初始化时 sockjs报错。

发布于 2022-09-04 09:38:11 字数 2138 浏览 16 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

撑一把青伞 2022-09-11 09:38:11

换了sockjs 0.3.4之后这个报错确实没有了,但是有了新的问题。

WebSocket connection to 'ws://127.0.0.1:8080/pms/websocket/181/vledvxj1/websocket' failed: WebSocket is closed before the connection is established.
如梦初醒的夏天 2022-09-11 09:38:11

你的服务端是否是亚马逊的Elastic Load Balancing? 如果是的话,服务端是不支持websocket协议的,必须开启底层的TCP通道。

具体教程可以参考:http://blog.flux7.com/web-app...

clipboard.png

仙气飘飘 2022-09-11 09:38:11

<script src="https://cdn.bootcss.com/sockj...;></script>
把导入的sockjs的版本从1.1.1改为1.0.0就可以了

雾里花 2022-09-11 09:38:11

请问怎么解决的呢?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文