13

そこにはたくさんの websocket -> ソケットラッパー ( websockify など) がありますが、そこに利用可能な反対のものはありますか? 具体的には、アプリケーションで TCP ソケットに接続し、プロキシを websocket に変換し、別の websocket サーバーに変換できるようにしたいと考えています。

4

4 に答える 4

11

WebSocket クライアントから TCP サーバーへのブリッジングは、下位レベルの TCP プロトコルを上位レベルの WebSocket プロトコルにカプセル化する一般的なソリューションです。ブラウザー (または他の WebSocket クライアント) が任意の TCP サーバーと通信できるようにします。クライアント (JavaScript) アプリケーションは、TCP サーバーが話すプロトコルをデコード/エンコードできる必要があることに注意してください。

逆の操作は一般的ではなく、ブリッジが WebSocket メッセージを TCP サーバーにエンコードする方法を認識できるように、TCP クライアント アプリケーションからブリッジへのメッセージの特別なフレーミングが必要になります。WebSockets はメッセージ ベースのトランスポートであり、TCP は低レベルのストリーミング トランスポートです。TCP トランスポート層には、プロトコル自体にメッセージの概念がないため、これは上位層で処理する必要があります。つまり、TCP クライアント アプリケーションがブリッジ アプリケーションと通信できるようにするには、WebSocket クライアントをアプリケーションに直接実装する場合とほぼ同じ作業を行う必要があります。実際には、ほとんどの一般的な言語で使用できる WebSocket クライアント ライブラリが既に存在するため、直接実装することはおそらくあまりありません。

クライアントとブリッジ (メッセージ境界とオペコード情報を追加するため) を変更せずに、ブリッジを介して既存の TCP クライアントを既存の WebSocket サーバーに接続することはできません。または、WebSiocket を無視する特別な WebSocket サーバーが必要になります。メッセージの境界を取り、受信データをストリームとして扱います (メッセージの解析は上位層で処理されます)。

おそらく、これが役立つと思われるユースケースを挙げていただけますか?

免責事項: websockify を作成しました。

于 2013-02-18T16:39:12.853 に答える
6

何を探していたのかわかりませんが、将来誰かに役立つ場合は、問題を解決するために何をしたかを書きます。

私の問題: Web アプリケーションのサーバーで noVNC をホストできるようにしたかったのですが、websockify を使用せずに非 websocket vnc サーバーがそれを理解できるようにしたかったのです。

私の解決策: ws-tcp-bridge node.js モジュールを 使用して、noVNC クライアントが vnc tcp サーバーのホストに接続する websocket ポート <--lport> をブリッジしました。

例: これは、vncserver のマシンから次のコマンドを実行すると発生します。

ws-tcp-bridge --method=ws2tcp --lport=5555 --rhost=127.0.0.1:5902

そうすれば、ポートで非websocket vncserverをホストし、ポート5902でnoVNC経由で接続できました5555

これはあまりテストしていませんが、x11vnc vnc サーバーでうまく動作します。

于 2015-12-16T16:43:38.173 に答える
0

あなたが何を求めているのか完全にはわかりませんが、WebSocket API は主にクライアント側に適用されます。

サーバー側スクリプトをどのようにコーディングするか、どの言語を使用するかは完全にあなた次第です。サーバー側のスクリプトをコーディングするときは、TCP ソケットを使用するかどうかなどを選択できる必要があります。

于 2013-02-18T08:45:20.703 に答える