鍍金池/ 問(wèn)答/Linux  網(wǎng)絡(luò)安全  HTML/ 使用SockJS進(jìn)行WebSocket連接時(shí)stompClient.connec

使用SockJS進(jìn)行WebSocket連接時(shí)stompClient.connect方法不執(zhí)行是為什么?

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

前端使用sockjs.js和stomp.js進(jìn)行WebSocket連接的時(shí)候,debug看到執(zhí)行到stompClient.connect方法時(shí),并沒(méi)有進(jìn)入方法體,而是直接跳到console.log語(yǔ)句,這是為什么???

回答
編輯回答
久舊酒

不曉得header的map是不是必填的,你可以在回調(diào)中打個(gè)斷點(diǎn)或者加個(gè)console,如果不是必填的,會(huì)走進(jìn)回調(diào)函數(shù)中。
再或者加個(gè)錯(cuò)誤的回調(diào)提示看看。
stompClient.connect({}, function (frame) {

    setConnected(true);            
},function(err){
console.log(error.headers.message)
});
2017年3月22日 18:13
編輯回答
離人歸

你說(shuō)的方法體是指你那setConnected(true);么,你這個(gè)應(yīng)該是一個(gè)回調(diào),并不是立即執(zhí)行的

2017年8月19日 21:50
編輯回答
墨小白

問(wèn)題解決了
我原來(lái)是把問(wèn)題中的connect()方法寫(xiě)在Ajax請(qǐng)求成功的回調(diào)函數(shù)里的,我想可能是因?yàn)檫@種情況下HTTP協(xié)議與WebSocket協(xié)議有沖突吧。具體到底是什么原因我就不清楚了...
最騷的主要是前后臺(tái)都沒(méi)有報(bào)錯(cuò),令人費(fèi)解...

2018年2月11日 13:08