3

異なるポートで2つのnode.jshttpserverを実行したい:

var http = require('http');        

var dbserver = http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<html><body><h2 align=center>TEST index.html.</h2></body></html>');
    res.end();
});

dbserver.listen(8888);

var s = http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('hello world');
    res.end();
});

s.listen(8080);

AppFogホスティングのポート8888でNode.jsサーバーに接続し、サーバーにメッセージを送信して、サーバーからの応答を受信するAndroidアプリケーションを作成したいと思います。また、ブラウザからサーバーを開くと、単純なhtmlページが表示されます。しかし、私のコードは機能しません。なんで?

4

3 に答える 3

4

AppFogで、Nodeアプリを実行するためのいくつかのドキュメントをここで見ることができます:http://docs.appfog.com/frameworks/node

重要な部分の1つは、バインドするポートを決定する方法です。コードサンプルには、s.listen(8080);があります。ただし、指定するポートは実際にはenvvarにあります。

s.listen(process.env.VCAP_APP_PORT || 8080);

AppFogは現在、同じアプリに対して2つのポートを開くことをサポートしていないため、これを2つのアプリに分割し、2番目のポートを同様にenvvarにバインドする必要があります。

dbserver.listen(process.env.VCAP_APP_PORT || 8888);

AppFogは数か月以内にWebSocketをサポートしますが、現在は利用できません。

于 2012-09-25T19:26:18.490 に答える
2

まあ、まあ、まあ、私はAppFogサポートからの電子メールの回答を持っていますそれは次のように聞こえます:

// ------------------------------------------------ ----------------------

ジョー、9月19日12:30(PDT):

やあ!

残念ながら、AppFogではHTTPトラフィックのみがサポートされているため、WebSocketとUDPトラフィックは機能しません。ただし、WebSocketのサポートはロードマップに含まれているので、ご期待ください。

ジョーAppFogサポート

// ------------------------------------------------ ---------------------

したがって、問題はNode.jsになく、私のコードにもありませんでしたが、AppFogにありました。どうもありがとうございました!

于 2012-09-20T04:49:02.827 に答える
1

確かに、1つのノードアプリの2つの異なるポートで2つの異なるサーバーを実行できますが、クライアント側のコードで両方にアクセスする場合は、同一生成元ルールの問題(ブラウザーなど)が発生する可能性が非常に高くなります。同じURLの2つの異なるポートは、2つの異なるオリジンと見なされるため、1つのサーバーからロードされた実行中のコードは、通常、他のサーバーに対してAJAX要求を実行できません。サーバー間の接続機能は、スクリプトのリクエスト(JSONPリクエストを含む)とWebsocket接続(ただし、socket.ioを使用していて、クライアントがWebsocketをサポートしていない場合は、ソケットを使用するフォールバックトランスポートメソッド)に制限されます。 .ioの使用は、必ずしもクロスオリジンで機能するとは限りません。

于 2012-09-19T09:05:31.817 に答える