は、ブラウザテストのためのOPの要求に応答して、私はindex.html
ファイルが提供されているサーバーにプロキシへの私の元のソリューションの両方のHTTPおよびWSトラフィックを修正しました。このファイルはWebSocket経由でブラウザをプロキシサーバーに接続します.WebSocketはプロキシがメインサーバーにプロキシします。メインサーバーからブラウザ文書に簡単なメッセージが出力されます。
/何かをコピー&ペーストする必要がないように、私は完全な命令で、このレポを作成しましたが:https://github.com/caasjj/httpproxy.git
ここでのコードの場合には他の人がここでそれを見たいです。全体のことを実行するには、2つのサーバー・ファイルとindex.html
ファイルを作成node proxyreceiver.js
とnode 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>
は、1 +、私はこれらの3つのファイルを作成し、ノードのアプリを起動し、任意のエラーを取得didntはどうもありがとうございましws'、問題があるときに私はブラウザにURLを入れました(8014/9014のように)コンソールにも何も起こりません。何か不足していますか?私は追加のステップが必要ですか(このトピックには新しいですか?) –
私たちはレンダリング可能なhtmlをブラウザに返します。元の質問では、接続を確認するためのテストコードが必要でした。これが答えを書いた方法です。クライアントがサーバーに接続していることを確認できましたか?要求をプロキシしてから応答しますか?そうであれば、Webソケット接続がプロキシサーバーを介して動作していることを確認します。ブラウザのテストコードが必要な場合は、追加のコードを提供する必要があります。 – caasjj
テストコードをブラウザで実行するように更新しました。これがあなたが必要とするものに近いかどうか、私に知らせてください。 – caasjj