4

この質問は範囲が広すぎるかもしれませんが、適切な質問だと思いますが、どのように処理すればよいかわかりません。

現在、example.com でウェブサイトをホストしています。現時点では、100% node.js を使用してこれを行っています。を使用するネットワーク化された HTML5 ゲーム (game.example.com で) もホストしていますがsocket.io、これは素晴らしいことですが、C++ (または場合によっては Java) を使用してゲーム サーバーを処理することに決め、翻訳を計画しています。 JavaScript からのサーバー ロジック。

現時点での最大の問題は、WebSocket を接続する方法がわからないことです。node.js を使用して完全なクライアント (HTML および JavaScript) を提供する予定ですが、クライアントを node.js サーバーではなく C++ サーバーに接続したいと考えています。

私が現在サーバーに接続している方法は、単純に socket.io から取得したソケットを使用することですio.connect();。サーバー側のソケットをnode.jsからC++プログラムに渡すだけでいいのですが、これを行う方法がまったくわかりません。

誰でも私を助けることができますか?

4

2 に答える 2

5

私が正しく理解していると仮定すると、Node で通常の HTTP リクエストを処理したいが、Websocket リクエストを C++ サーバーに渡したいですか? アップグレード リクエストに Node でプロキシを使用してみてください。

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

//have your c++ server for websockets operating on port 1333
var proxy = new httpProxy.HttpProxy({
  target: {
    host: 'localhost',
    port: 1333
  }
});

var server = http.createServer(function (req, res) {
    //handle normal requests in here
});

server.on('upgrade', function (req, socket, head) {
  // Proxy websocket requests...
  proxy.proxyWebSocketRequest(req, socket, head);
});

server.listen(80);
于 2013-08-19T09:52:14.337 に答える
3

まず、クライアントを C++ サーバーに直接接続するオプションがあります。たとえば、socket.io トランスポートが websockets の場合、http://libwebsockets.org (サーバー側の C++ websockets ライブラリ) を使用できます

それ以外の場合は、クライアントに socket.io を node.js サーバーに接続させ、C++ サーバーと node.js サーバーの間で簡単な通信を確立することができます。「C++ サーバーへの socket.io を処理」しようとしないでください。単純に、C++ サーバーと node.js サーバーが相互に通信し、プレイヤーの状態に関するメッセージをやり取りします。C++ がロジックを処理します。 、そして node.js が実際の送受信を行います。たとえば、単純な TCP ソケットを使用してこれを行うことができます。

于 2013-08-19T06:42:36.417 に答える