2013-02-01 42 views
1

我在nodejs上運行socket.io,在apache網站上運行socket.io客戶端。如果我不啓動服務器的NodeJS和我加載客戶端頁面了錯誤事件被觸發一個空的錯誤消息,並且我也得到以下轉儲到我的瀏覽器控制檯nodejs socket.io不可捕捉的錯誤

GET http://domain.com:1337/socket.io/1/?t=1359731838906 socket.io.js:1659 
Socket.handshake socket.io.js:1659 
Socket.connect socket.io.js:1699 
Socket socket.io.js:1551 
io.connect socket.io.js:94 
(anonymous function) general.js:7 
(anonymous function) 

我能做些什麼來阻止這個錯誤被寫入控制檯?

回答

3

隱藏該錯誤的唯一方法是從不首先調用io.connect –這當然意味着即使服務器啓動,您的應用程序的套接字函數也不起作用。

重要的是要明白,你看到的錯誤信息既不是由socket.io本身(通過console.error())放置在那裏,也不是未捕獲的JS異常。

錯誤消息由瀏覽器的XHR對象本身放置在控制檯中。它告訴你一個XHR請求失敗(因爲你的服務器沒有運行)。堆棧跟蹤告訴你什麼代碼啓動了XHR請求;它不是一個實際例外的痕跡。

因爲socket.io 必須向服務器發出請求,所以如果服務器沒有響應,它(或你)不可能阻止該控制檯中出現該錯誤消息。

+0

如果socket.io有一個讓用戶處理錯誤的選項會怎樣?也許他們在XHR上做了一個try/catch或錯誤處理程序並委託給客戶端? – Murukesh