運用変換にライブラリ(ShareDB)を使用しています。サーバー側とクライアント側は、websocket-json-streamを使用して通信します。しかし、このShareDBは、私の主要なWebフレームワークがTornado(Python)であるため、nodejs上でサービスとして実行されています(私はノードプロセスを制御するためにzerorpcを使用しています)。このthreadから、TCPなどのステートフルなプロトコルでは、クライアントポートによって接続が区別される(したがって、1つのサーバーポートのみが必要である)ことが分かりました。このresponse regarding how websockets handle multiple incoming requestsによれば、tcpとwebsocketの間の基礎となるトランスポートチャネルに違いはありません。複数のWebソケットを区別する
私の質問は、クライアントからPythonサーバー、さらにはクライアントから自分のnodejsコード(ShareDBサービス)にwebsocketを作成した場合、サーバーはどのソケットがどのサーバーに接続されているかを区別できますか? (つまり、最初にPythonサーバーとの通信を確立してから、2番目のWebSocketの受信を開始するために)1つのソケットだけを「リッスン」することはサーバーの責任ですか?
何につながっているのかよくわからない。あなたは、あなたが意味することについての十分な説明がなくても、「サーバ」および「クライアント」という用語を使用します。あなたは2つのサーバー(pythonサーバーとnodejsサーバー)とクライアントを持っているようです。だから、私はクライアントがあなたの2つの別々のサーバーのそれぞれに接続していると仮定します。しかし、どのようにサーバーを区別できるかを尋ねますが、各サーバーは特定のクライアントに対して1つの接続しか持たないようにしてください。あなたがしようとしていることについては混乱しています。参考までに、通常は着信http接続とCookieの識別方法と同じ方法で着信webSocket接続を識別します。 – jfriend00
クライアントから同じ物理サーバーコンピュータ上の別のサーバーに接続している場合、各サーバープロセスは別のポートで待機し、クライアントは適切なポートに接続してそのサーバーを識別しますに接続しています。 – jfriend00
ありがとう、私はそれを整理したよりも要約したと思いますので、私は言葉を編集します。両方のサーバーが同じ物理システム上にあります...私はHerokuを使用していますが、理解しているとおり、単一のポートのみを開くことができます。 – Flaminator