2015-03-19 91 views
0

我測試的應用程序的客戶端/服務器連接依賴於Node.js 0.12.0和socket.io 0.9.6。Socket.io socket.emit()*隨機*不發射在同一臺計算機和瀏覽器

在客戶端簡單:

window.onfocus = function() { 
     socket.emit('active'); 
}; 

,並在服務器端:

client.on('active', function(){   
    console.log('active'); 
}); 

,當我在本地測試這個程序沒有問題。

當我在網上測試,該socket.emit();會隨機無法在同一臺電腦和瀏覽器,即在工作時,我重裝我的網頁我會看到「活躍」在我的日誌,然後我重裝後什麼也看不見,重載/什麼,重新加載/沒有,重新加載/「活動」等...

任何想法,爲什麼這會發生在同一臺計算機和相同的瀏覽器?

回答

0

我的問題是我的電腦上安裝了Avast,我強制websocket通信,並且Avast阻止websockets(嘗試禁用Avast並查看它是否能解決您的問題)。

的問題已報告超過五年前的avast但顯然一切都沒有改變:https://forum.avast.com/index.php?topic=68270.0

解決方案是工作最適合我:

  • 使用TLS/SSL(如果你的主機您在Heroku上的應用程序只是https://..訪問你的應用程序)

其他可能的解決方案:

  • 使用XHR輪詢代替的WebSocket:

    io.set( '傳輸',[ 'XHR輪詢']);

,但我的應用程序XHR輪詢太慢

注意,在最後一個版本的socket.io xhr-polling是默認啓用的,所以這個bug應該更少發生。

相關帖子#1:

Socket.io 0.7.9 connection issues

Socket IO WebSocket requests blocked by corporate firewalls.