我試圖讓socket.io與node-http-proxy一起工作,但它總是回退到xhr,websockets將無法工作,雖然我正在連接到node-http-proxy文檔中描述的升級事件。node-http-proxy socket.io websocket連接
var httpProxy = require ("http-proxy");
var server = httpProxy.createServer (function (req, res, proxy) {
var buffer = httpProxy.buffer (req);
proxy.proxyRequest (req, res, {
host : "localhost",
port : 8001,
buffer : buffer
});
});
server.listen (80);
server.on('upgrade', function (req, socket, head) {
server.proxy.proxyWebSocketRequest(req, socket, head, { host : "localhost", port : 8001 });
});
該應用明顯運行在localhost:8001上,如果我允許所有傳輸方法,它將使用xhrs正常工作。如果我強迫它使用WebSockets Firefox會說
Firefox can't establish a connection to the server at ws://localhost/socket.io/1/websocket/cNp5J80KAWkXqjE6OZOt. @ http://localhost/socket.io/socket.io.js:2371
就使用默認的方法
httpProxy.createServer (8001, "localhost").listen (80);
導致同樣的錯誤。
您沒有相同的代碼在所有我已經......你能鏈接在哪裏找到代碼中的文檔?同時你可以看看我的代碼[這個答案](http://stackoverflow.com/questions/15411042/how-to-run-node-js-app-on-port-80-using-http-proxy/15427378#15427378)這對我很有用。如果僅將它與一個域一起使用,則可以刪除switch-statement。 – 2013-03-21 14:22:52
我從這裏得到了代碼:https://github.com/nodejitsu/node-http-proxy#proxying-websockets(我在那裏的緩衝線有一個實驗剩餘的餘量,我現在將其刪除:/) With你的代碼我仍然有同樣的問題。 難道是版本問題?我正在運行node-http-proxy 0.10.0,socket.io 0.9.13和節點0.10.0。 – tom 2013-03-21 17:07:08