2013-08-18 51 views
3

這些節點的版本和需要的模塊,我使用:代理功能的WebSockets不起作用

當我運行下面的程序我的控制檯輸出看起來像這樣,不動之外這一點:

$ 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(從而繞過代理),事情似乎工作正常。

任何建議,指針,反饋將不勝感激。

謝謝!

+0

看起來像它現在正在工作的東西,正如這裏所討論的:http://stackoverflow.com/questions/16503349/node-http-proxy-with-proxytable-and-websockets – verma

回答