簡體   English   中英

node-http-proxy socket.io websocket連接

[英]node-http-proxy socket.io websocket connection

我正在嘗試使socket.io的node-http-proxy正常工作,但是它總是退回到xhr,websockets無法正常工作,盡管我正在按照node-http-proxy的說明連接到升級事件。文檔。

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);

導致相同的錯誤。

使用node-http-proxy代理websocket似乎在節點0.10上已損壞。 這是一個嘗試修復它的請求請求,但請參見我的評論:該修復程序也不完全起作用。

https://github.com/nodejitsu/node-http-proxy/pull/402

我當前正在使用(最新版本v1.0.1)node-http-proxy,我發現在對Node v0.10.20進行調整(參見下文)后,Websockets確實確實能夠可靠地工作。 默認情況下,當刪除websocket連接時,node-http-proxy似乎支持xhr-polling。

在“ 示例 ”中,我添加了“ ws”標志true

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

httpProxy.createServer({
  target:'http://somehost.tld:5000',
  ws : true //added Websockets Flag TRUE
}).listen(80);//arbitrary port

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM