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

春上村树
  • 23
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语句,这是为什么啊?

回复
阅读 13.6k
3 个回答

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

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

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

    setConnected(true);            
},function(err){
console.log(error.headers.message)
});
宣传栏