2015-11-29 101 views
-1

我有nodeJS應用程序,我必須使用socket.io。在頁面的客戶我有這樣的代碼:NodeJs,socket.io,IE

var serverBaseUrl = document.href; 
var socket = io.connect(serverBaseUrl, {'sync disconnect on unload' : true}) 
socket.on('connect', function() { 
    alert("socket connect"); 
    sessionId = (socket.io.engine.id).toString().substr(0, 10); 
    console.log("socket.io connected : " + sessionId); 
}); 

的NodeJS代碼:

var server = http.createServer(app); 
var io = require('../service/sockets').startServer(server); 

startserver的功能:

io.listen(server).on('connection', handler); 

但是這段代碼不能在IE火(我測試9和11版本)。

在Chrome和其他,它完美的作品。此外,有一件有趣的事情:我啓動服務器使用npm start,然後在IE中打開一個選項卡,並沒有套接字連接,然後我關閉進程的節點應用程序,並重新啓動它,現在,開始後,IE瀏覽器觸發事件​​連接和我有套接字會話。

任何想法會發生什麼?

+0

套接字連接由客戶端發起;您需要分享您的客戶端JS以獲得有關您問題的幫助。 – mz3

+0

我的問題第一代碼部分 - 這是客戶端上的JS – dikkini

+0

哦,我明白了。你能分享整個事情嗎?你應該有一個地方讓套接字連接。例如:'var socket = io('http:// localhost');'。也包括相關的node.js代碼。 – mz3

回答

0

問題出在socket.connect操作後的很多警報中。因此,爲了在旁邊: 1.警惕 2.插座連接 3.警報 4.警報

當delte 3個4警報 - 我的代碼開始工作。不知道爲什麼,我有人知道 - 請寫信給我。

UPDATE

的問題是在執行console.log。在沒有開發工具的情況下,對象控制檯不存在於IE中。因此,刪除所有console.log和所有作品!

+0

'警報()'在錯誤的地方會中斷計時並導致超時。你幾乎不應該使用alert()來進行調試。使用'console.log()',因爲它不會導致計時問題。 – jfriend00

+0

我編寫IE時不能使用console.log,因爲當我在IE中打開開發工具來查看控制檯 - 一切正常! – dikkini