2013-05-27 40 views
3

由於某種原因,http-proxy會在每2分鐘後重新連接基於socket.io的websocket連接。在重新連接消息在客戶端和服務器之間正常工作之前。如果我繞過代理服務器,websocket連接將不會重新連接。代理配置非常基本,並遵循nodejitsu的示例。使用Socket.io的node-http-proxy websocket超時

var http = require('http'), 
    httpProxy = require('http-proxy'); 

var options = { 
    hostNameOnly: true, 
    router: { 
    'example.com/sockets/': '127.0.0.1:9001' 
    } 
}; 

var proxyServer = httpProxy.createServer(options); 
proxyServer.listen(80); 

我也嘗試更改配置中的超時選項,但這不會影響重新連接問題。

timeout: 120000 // override the default 2 minute http socket timeout value in milliseconds 

軟件版本:Ubuntu 12.04服務器,node.js 0.8.16,http-proxy 0.8.7,socket.io 0.8.7。

這適用於dev Mac(10.8.3)和Ubuntu桌面12.04(virtualbox),但不適用於服務器。

+0

我的猜測是你和你的服務器之間有一個代理,它並不喜歡websocket。嘗試使用https/wss代替。 –

回答

0

在傳遞給createServer的選項中設置超時。 options.timeout對於套接字超時 和options.proxyTimeout允許傳出套接字超時,以便我們可以在初始請求時顯示錯誤頁面。