3
這些節點的版本和需要的模塊,我使用:代理功能的WebSockets不起作用
- 的Node.js:0.10.16
- 的WebSocket庫:einaros/WS [email protected]
- 代理服務器:nodejitsu /節點HTTP代理[email protected]
當我運行下面的程序我的控制檯輸出看起來像這樣,不動之外這一點:
$ node app.js
proxy: got upgrade, proxying web request
wss: got connection
下面的代碼:
// app.js
// A simple proxying example
//
// Setup websocket server on port 19000
// Setup proxy on port 9000 to proxy to 19000
// Make a websocket request to 9000
//
var WebSocket = require('ws'),
WebSocketServer = WebSocket.Server,
proxy = require('http-proxy');
// goes in a loop sending messages to the server as soon as
// the servers are setup
var triggerClient = function() {
var ws = new WebSocket('ws://localhost:9090/');
ws.on('open', function() {
console.log('ws: connection open');
setInterval(function() {
ws.send("Hello");
}, 1000);
});
ws.on('message', function(data) {
console.log('ws: got ' + data);
});
}
// setup websocket server and a proxy
//
var go = function() {
// setup a websocket server on port 19000
//
var wss = new WebSocketServer({ port: 19000 });
wss.on('connection', function(ws) {
console.log('wss: got connection');
ws.on('message', function(data) {
console.log('wss: got ' + data);
ws.send('wss response: ' + data);
});
});
// setup a proxy server
var server = proxy.createServer(function (req, res, proxy) {
proxy.proxyRequest(req, res, {
host: 'localhost',
port: 19000
});
});
server.on('upgrade', function (req, socket, head) {
console.log('proxy: got upgrade, proxying web request');
server.proxy.proxyWebSocketRequest(req, socket, head, {
host: 'localhost',
port: 19000
});
});
server.listen(9090, triggerClient);
};
process.nextTick(go);
我的問題,當我試圖用hipache終於開始了,我再簡單的事情節點HTTP代理,然後最後這段代碼。
如果您更改WebSocket客戶端連接到的端口從9090到19000(從而繞過代理),事情似乎工作正常。
任何建議,指針,反饋將不勝感激。
謝謝!
看起來像它現在正在工作的東西,正如這裏所討論的:http://stackoverflow.com/questions/16503349/node-http-proxy-with-proxytable-and-websockets – verma