WebSocketの契約とSocket.IO

、HTTPは簡単にリアルタイムアプリケーションを実現することはできません。

●HTTPプロトコルはステートレスで、サーバは、クライアントからの要求に応答しますが、それ自体とクライアントの間で常時接続を持っていません。
●私たちは非常に簡単に、このイベントは簡単に(などのAjaxなど)のサーバとのデータ交換を生成することができます(たとえば、ボックスをユーザーがクリックするなど)、ブラウザ上で発生するイベントをキャプチャすることができます。
 しかし、逆は不可能です:イベント・サーバーの発生、サーバーは、積極的に顧客に通知するイベントに関するリアルタイムの情報にすることはできません。
 イベント前の情報は、サーバからクライアントに行われた場合にのみ、クライアントは、サーバの現在の状態を問い合わせます。

第二に、長いポーリング、長い接続

●ロングポーリング:すべてのクライアントに非常に短い時間で、サーバは限り速度が十分に高速であるように、回転中に新しいメッセージがあるかどうかを確認するために要求を送信します、例えば、1秒は、それがリアルタイムである相互作用によって生じる印象を与えることができます。
 このアプローチは、実際には、サーバー、クライアントは、両側には、無駄なパフォーマンスの多くを引き起こしている、非常に怒っています。 ●長い接続:クライアントに一度だけの要求が、サーバーが結果を返さない接続を維持します(私たちは(res.endを書いていないことを想像)、ブラウザは、小さな菊をオンにすることでした)。
 新しいデータ・サーバを使用すると、データが戻って送信されます、新しいデータがあった、データが返送されますが、保留中のままになります。このアプローチはまた、無駄なパフォーマンスの多くを引き起こしています。

三、WebSocketのプロトコル

●最新のHTML5プロトコル、クライアントとサーバは、全二重方式で通信することができます開発のWebSocketプロトコル標準。
●WebSocketの原理は非常に単純です:握手した後、握手を生成したHTTP要求の使用は、2つのターンは、TCPプロトコルを使用して(QQプロトコル)通信します。
●使用のWebSocketプロトコルは、ブラウザとサーバーのサポートを使用することができます必要があります。
●サポート用WebSocketプロトコルブラウザ:クローム 4 、Firefoxの4、IE10、Safari5 
●サポート用WebSocketプロトコルのサーバがあります。ノード 0、Apach7.0.2、Nginx1.3を

四、Socket.IO

  公式ウェブサイトのアドレス:https://socket.io/docs/rooms-and-namespaces/

●誕生日からのNode.jsは、WebSocketのプロトコルをサポートしています。しかし、非常に難しいステップで地上段階からソケットサーバを構築する(ノードは、静的なファイルサービスはとても難しいです書き込み想像)。そのため、大規模な神は、私たちは、ライブラリSocket.IOを書く際に役立ちます。
●Socket.IOは、業界の良心、初心者福音です。これは、すべての詳細の下をシールドするので、トップレベルのコールは非常に簡単です。そしてまた、ブラウザ用WebSocketプロトコルをサポートしていない、透明機構シミュレーションロングポーリングを提供します。
●ノードのシングルスレッド、I、非ブロッキングソケットサーバに最適です、/ O、イベント駆動型のメカニズムを。

五、Socket.IO設定

  図1に示すように、サーバ側の設定

サーバーを作成した後●、文
 のvar IO =必要(「Socket.IO」)(サーバー)は、
オブジェクトIOをインスタンス化することができ、その後、URLの /socket.io/ socket.io.jsデフォルトでは、静的ファイルのjsになりますサービス。
●リスナー:
io.on(「接続」機能(ソケット){ 
}); 
●ソケット方法及び本発明の方法に放出します。送信されたサーバからのイベントリスナーをカスタマイズするために使用される方法に、カスタムイベントを送信するための方法を発します。

  2、クライアントの構成

●HTMLページはローカルではない、サーバー上で実行している必要があります。
●HTMLページが参照する必要が /socket.io/ socket.io.jsファイルを、その後、IO()関数を実行し、ソケットオブジェクトを取得します。
●そこ方法を発するとメソッドソケットオブジェクトに。送信されたサーバからのイベントリスナーをカスタマイズするために使用される方法に、カスタムイベントを送信するための方法を発します。

    3、ExpressとSocket.IO

●エクスプレスフレームはSocket.IOとではなく、代わりに固定パターンを使用して、通常の画像app.listen Expressプログラムとリスニング、として使用することができる:
    varが=必要とする(「エクスプレス」エクスプレス); 
    VARアプリ= エクスプレス(); 
    VAR =必要HTTP( 'HTTP' ).server(APP);  VAR = IO必要( 'Socket.IO' )(HTTP); 
 http.listen(3000)。

 

おすすめ

転載: www.cnblogs.com/angelatian/p/11076855.html