使用SockJS进行WebSocket连接时stompClient.connect方法不执行是为什么?

发布于 2022-09-06 23:59:26 字数 402 浏览 20 评论 0

function connect() {        
    var socket = new SockJS('/socket');        
    stompClient = Stomp.over(socket);        
    stompClient.connect({}, function (frame) {            
        setConnected(true);            
    });
    console.log("test");    
}

前端使用sockjs.js和stomp.js进行WebSocket连接的时候,debug看到执行到stompClient.connect方法时,并没有进入方法体,而是直接跳到console.log语句,这是为什么啊?

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

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

发布评论

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

评论(3

七婞 2022-09-13 23:59:26

问题解决了
我原来是把问题中的connect()方法写在Ajax请求成功的回调函数里的,我想可能是因为这种情况下HTTP协议与WebSocket协议有冲突吧。具体到底是什么原因我就不清楚了...
最骚的主要是前后台都没有报错,令人费解...

软糖 2022-09-13 23:59:26

你说的方法体是指你那setConnected(true);么,你这个应该是一个回调,并不是立即执行的

耀眼的星火 2022-09-13 23:59:26

不晓得header的map是不是必填的,你可以在回调中打个断点或者加个console,如果不是必填的,会走进回调函数中。
再或者加个错误的回调提示看看。
stompClient.connect({}, function (frame) {

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