WebSocket を使用して、irc、icq、sip などのサービスに接続したいと考えています。JavaScript でこれらのプロトコルの何らかの実装があると仮定しますか? それは可能ですか?通常のソケットと比較して WebSocket の制限を理解していないようです。
5 に答える
絶対!
注意点は、ブラウザの WebSocket トランスポート プロトコルと既存のサービスの未加工の TCP ソケットとの間をブリッジする何かが必要だということです。たとえば、websockifyのようなもの(免責事項: websockify を作成しました)。もう 1 つの注意点は、websockify は TCP ターゲットのみをサポートすることです (WebSocket は現在 TCP のみであるため、UDP ターゲットをサポートすることはとにかく少し奇妙です)。
websockify プロジェクトには、IRC および telnet と通信するための 2 つの概念実証 HTML/Javascript ページが実際に含まれています。websockify を利用していくつかの一般的な TCP プロトコル用の HTML/Javascript クライアントを構築することに興味がある場合は、例としてそれらを websockify リポジトリにプルすることもできます (適切にコーディングされ、オープン ソース ライセンスの下にあると仮定します)。
websockify に代わる方法は、websocket サーバー側のサポートを、通信したいサーバーに直接統合することです。サポートを追加することはそれほど難しいことではありません。WebSocket は非常に単純なフレーミングを備えており、ハンドシェイクは HTTP サーバーと互換性がありますが、実際にははるかに制限され単純であり、完全な HTTP パーサーを必要としません。たとえば、libvncserver 0.9.9 は、通常の VNC 接続と WebSocket を介した VNC 接続の両方をサポートするようになりました。これにより、websockify を必要とせずに、noVNC (これも作成しました) が libvncserver ベースの VNC サーバーに直接接続できるようになります。
いいえ、できません。少なくとも直接はできません。
WebSocket は、ブラウザーと WebSocket サーバー間のリアルタイム メッセージングを可能にしますが、これらのメッセージをカプセル化するための独自のレイヤー 7 プロトコルを備えています。
既存のプロトコルを実装できる純粋な TCP (または UDP) ソケットへのアクセスは提供しません。
m_websockets
Inspirecd には、接続を許可するためにインストールできる という非公式のモジュールがあります。モジュールがインストールされてセットアップされたサーバーでは、webbsockets 経由でサーバーに接続できます。
@kanaka の websockify を拡張すると、このプロジェクトはそれを行うようです:
websocket と websockify で作成された HTML5 IRC クライアント。
[Has] autojoin、privmsg channel、topic、join、userlist、part、nick のサポート。
いいえ、websocket ではできませんが、http ではできます。