2016-07-23 3 views
2

今、私は転送として必須のWebソケットを持つsocket.ioを使用しています。私は未加工のウェブソケットに移行することを考えていますが、socket.ioの動きを失うことになる機能についてはっきりしていません。ご指摘ありがとうございます。socket.ioからraw websocketに移行しますか?

+0

なぜプレーンウェブソケットに移行したいですか? – jfriend00

+0

これは話題にはならず、意見に基づいた議論を呼び起こしていますが、私はそれを投票しています...良い技術的な答えを得て、より多くの人々がプラットフォーム間の(巨大な)違いについて学ぶことを望みます。 – Myst

答えて

8

socket.ioライブラリが標準WebSocketを超えて、以下の機能が追加されています。ブラウザがWebSocketをサポートしたりしていない場合のWebSocket対ロングポーリングの

  1. 自動選択ネットワークパスは、プロキシ/ファイアウォールを持っている場合にWebSocketsをブロックします。

  2. (サーバーが再起動しても)接続が切断された場合の自動クライアント再接続。デッド接続(非機能接続を検出するために定期的にpingを使用して)へ/ JSONから自動変換してスキームを通過

  3. メッセージの

  4. 自動検出。

  5. 接続されたユーザーのグループとの通信が容易なサーバーサイドの概念です。

  6. サーバーに接続するのではなく、サーバー上の名前空間に接続するという概念。これはさまざまな機能に使用することができますが、どのタイプの情報を購読したいのかをサーバーに伝えるために使用します。特定のチャンネルとの接続に似ています。

  7. 接続されたすべてのクライアントを自動的に追跡し、いつでも列挙できるサーバー側のデータ構造。

  8. ミドルウェアアーキテクチャは、元の接続からのクッキーへのアクセスを認証などの実装に使用できるsocket.ioライブラリに組み込まれています。

  9. 最初に接続されたときに接続に存在するCookieおよびその他のヘッダーを自動的に格納します(接続されているユーザーを識別するのに非常に便利です)。

  10. 接続されているすべてのクライアント、ルーム内のすべてのクライアント、または名前空間内のすべてのクライアントに共通のメッセージを送信するサーバー側のブロードキャスト機能。

  11. メッセージ名にメッセージ名を付け、メッセージ名をeventEmitterにルーティングすることで、目的のメッセージ名をeventEmitterでリッスンすることによって受信メッセージをリスンすることができます。

+0

これはすばらしいリストです。情報に感謝します。 – boom

+0

ミドルウェアとクッキーは単にsocket.io機能ではなく、他のフレームワークでも利用可能な共通のフレームワーク機能です...さらに、websocketレイヤーとは何か関係がありますhttp層を使用します。私は彼らがリストから取り除かれることを提案するでしょう。いい答えを言っている...私はいくつかのものについてより多くの技術的な詳細が大好きですが。 – Myst

+0

番号1が間違っています。 'socket.io'は長いポーリングへのフォールバックを行いません。実際にはWebSocketへの接続が遅いため、常にXHRを使用して起動します。 – Myst

関連する問題