2015-09-05 5 views
10

をチェックするために、現在、私は私の質問はどのように私はできているノードプロキシウェブソケットIは、以下のモジュールを使用し、それが <a href="https://github.com/nodejitsu/node-http-proxy">https://github.com/nodejitsu/node-http-proxy</a> リバースプロキシの罰金どのように機能するか

httpProxy.createServer({ 
    target: 'ws://localhost:9014', 
    ws: true 
}).listen(8014); 

次の例のようなコードを使用しましたウェブソケットが動作していることを確認/シミュレート? 任意の試験は

答えて

6

は、ブラウザテストのためのOPの要求に応答して、私はindex.htmlファイルが提供されているサーバーにプロキシへの私の元のソリューションの両方のHTTPおよびWSトラフィックを修正しました。このファイルはWebSocket経由でブラウザをプロキシサーバーに接続します.WebSocketはプロキシがメインサーバーにプロキシします。メインサーバーからブラウザ文書に簡単なメッセージが出力されます。

/何かをコピー&ペーストする必要がないように、私は完全な命令で、このレポを作成しましたが:https://github.com/caasjj/httpproxy.git

ここでのコードの場合には他の人がここでそれを見たいです。全体のことを実行するには、2つのサーバー・ファイルとindex.htmlファイルを作成node proxyreceiver.jsnode proxyserver.jsでサーバを起動してからlocalhost:8014/index.htmlに移動します。

proxyserver.js):

var httpProxy = require('http-proxy'); 
var http = require('http'); 

var proxy = new httpProxy.createProxyServer({ 
    target: { 
    host: 'localhost', 
    port: 9014 
    } 
}); 
var proxyServer = http.createServer(function (req, res) { 
    proxy.web(req, res); 
}); 

// 
// Listen to the `upgrade` event and proxy the 
// WebSocket requests as well. 
// 
proxyServer.on('upgrade', function (req, socket, head) { 
    proxy.ws(req, socket, head); 
}); 

proxyServer.listen(8014); 

proxyreceiver.js):

var app = require('http').createServer(handler) 
var io = require('socket.io')(app); 
var fs = require('fs'); 

app.listen(9014); 

function handler (req, res) { 
    res.writeHead(200); 
    fs.readFile('index.html', function(err, data){ 
     res.end(data); 
    }) 

} 

io.on('connection', function (socket) { 

    socket.emit('data', { message: 'Hello World!' }); 

    socket.on('resp', function(msg) { 
    console.log('Got message: ', msg); 
    }); 

}); 

index.html):

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Web Socket Proxy Test</title> 
    <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script> 
    <script> 
    var socket = io('http://localhost:8014'); 
    var p = document.createElement("p") 
    socket.on('data', function (data) { 
     console.log('Got', data); 
     p.innerHTML = "Received:" + data.message; 
     document.body.appendChild(p); 
    }); 
</script> 
</head> 
<body> 
    <h1>Test ProxyServer</h1> 
</body> 
</html> 
+0

は、1 +、私はこれらの3つのファイルを作成し、ノードのアプリを起動し、任意のエラーを取得didntはどうもありがとうございましws'、問題があるときに私はブラウザにURLを入れました(8014/9014のように)コンソールにも何も起こりません。何か不足していますか?私は追加のステップが必要ですか(このトピックには新しいですか?) –

+0

私たちはレンダリング可能なhtmlをブラウザに返します。元の質問では、接続を確認するためのテストコードが必要でした。これが答えを書いた方法です。クライアントがサーバーに接続していることを確認できましたか?要求をプロキシしてから応答しますか?そうであれば、Webソケット接続がプロキシサーバーを介して動作していることを確認します。ブラウザのテストコードが必要な場合は、追加のコードを提供する必要があります。 – caasjj

+0

テストコードをブラウザで実行するように更新しました。これがあなたが必要とするものに近いかどうか、私に知らせてください。 – caasjj

1

テストする最良の方法は、それに接続するクライアントを作成することです...参考になります。 多くのwsモジュールがあります。または、これを使用することができます:https://www.websocket.org/echo.htmlちょうどそこにあなたのURLを置き、それをテストします。

+0

は、私はそれに接続するクライアントを作成する方法の例を提供していただけます? –

+0

私はリンクで提供しているものを使用してください。あなたはNode.jsのを使用すると呼ばれるモジュールを使用することができ、クライアントを作成したい場合は、 ' – DevAlien

関連する問題