2013-08-18 3 views
3

Ce sont les versions de noeud et modules requis J'utilise:mandatement WebSockets par noeud proxy HTTP ne fonctionne pas

Quand je lance le programme suivant ma sortie de la console ressemble à ceci, et ne se déplace pas au-delà ce point:

$ node app.js 
proxy: got upgrade, proxying web request 
wss: got connection 

Voici le code:

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

Mon problème a finalement commencé quand je tentais d'utiliser hipache, je puis simplifié les choses au nœud-http-proxy, puis enfin à ce morceau de code.

Si vous modifiez le port auquel le client WebSocket se connecte de 9090 à 19000 (contournant ainsi le proxy), les choses semblent fonctionner correctement.

Toutes les suggestions, les pointeurs, les commentaires seraient grandement appréciés.

Merci!

+0

On dirait que c'est quelque chose qui est en cours de traitement comme discuté ici: http://stackoverflow.com/questions/16503349/node-http-proxy-with-proxytable-and-websockets – verma

Répondre

Questions connexes