20

1 つのページで 2 つの WebSocket を使用しようとしています。これは私のコードです:

var pageViewWs = new WebSocket("ws://localhost:9002/pageView");
var sessionWs = new WebSocket("ws://localhost:9002/session");

pageViewWs.onmessage = function (event) {
  alert("PageView");
};

sessionWs.onmessage = function (event) {
  alert("Session"); 
};

PageView アラートのみが表示されます。サーバー側では、/session へのリクエストは行われず、/pageView へのリクエストのみが行われます。

ここで、var pageViewWs と var sessionWs を切り替えると、PageView の代わりにセッション アラートが表示されます。それらがアラートだからではありません。本文と div に追加しようとしましたが、Firebug を使用して手順を進めました。一度に作成できる WebSocket は 1 つだけのようですが、Firebug では、pageViewWs と sessionWs のプロパティは URL を除いて同じように見えます。

これは Firefox 15.0.1 でのみテストしました。一度に 1 つしか実行できない Websocket の制限はありますか? または、私のコードに何か問題がありますか?

4

3 に答える 3

3

クライアントからホスト上の特定のポートへのWebSocket接続は1つしか作成できないと思います。2つのサービスを異なるポートで実行したり、異なるサーバーで実行したりしましたか?これにより、制限を判断できます...

于 2012-09-19T16:06:04.713 に答える
3

同じポートを介して複数のサービスを実行するという同じ問題に直面しました。そこで、これを行うためのPHP ライブラリを作成しました。

なんで ?

ホスティング プロバイダーの一部の無料プランでは、ポートへのバインドが許可されていないか、1 つのポートへのバインドが許可されていません。OpenShift Cloud Serverの場合、ポート 8080 にのみバインドできます。そのため、複数の WebSocket サービスを実行することはできません。この場合、Francium DiffSocketが役立ちます。

Francium DiffSocketと呼ばれるPHP ライブラリを使用して、同じポートで異なるサービスを実行できます。

Francium DiffSocket をセットアップした後、さまざまなサービスを使用するためにこれを行うことができます。

var chatWS = new WebSocket("ws://ws.example.com:8000/?service=chat");
var gameWS = new WebSocket("ws://ws.example.com:8000/?service=game");

例として、単一のポートを介して実行されている次のサービスがあります。

于 2016-05-30T12:31:40.170 に答える
2

HTTP リクエスト ヘッドを除けば、両方のリクエストは同じです。それらは、同じポートで同じアプリケーション サーバーにアクセスします。各接続を開始した HTTP 要求に基づいて異なる方法で処理するのは、サーバー側アプリケーション次第です。

私はノードでこれを行いました。手動で行うこともできますが、次のようなパッケージ

プロセスを容易にします。

于 2016-10-31T08:04:55.937 に答える