WebSocket整理(一)--WebSocketの定義と構成

3754 ワード

WebSocket定義
WebSocketは、HTML 5が提供し始めた単一のTCP接続上でフルデュプレクス通信を行うプロトコルである.
WebSocketは、クライアントとサーバ間のデータ交換をより簡単にし、サービス側がクライアントにデータを積極的にプッシュできるようにします.WebSocket APIでは、ブラウザとサーバが握手を1回完了するだけで、両者の間に永続的な接続を直接作成し、双方向のデータ転送を行うことができます.
WebSocket APIでは、ブラウザとサーバが握手をするだけで、ブラウザとサーバの間に高速チャネルが形成されます.両者の間で直接データを互いに転送することができる.
二webSocektとポーリングの違い
ポーリング:
ポーリングは、1秒ごとなどの特定の時間間隔で、ブラウザがサーバに対してHTTP要求を発行し、サーバが最新のデータをクライアントのブラウザに返します.
私が前にやったプロジェクトの登録単位を主体単位として審査と協力単位審査の計画項目数として統計し、数秒後にバックグラウンドにデータ統計項目数を要求し、このように循環します.このモードには明らかな欠陥があり,帯域幅リソースを浪費し,複数回要求したが実際に必要とされるデータはそれだけである.
webSocket:
ブラウザはJavaScriptを介してWebSocket接続の確立をサーバに要求し,接続が確立されるとクライアント側とサーバ側はTCP接続により直接データを交換することができる.Web Socket接続を取得するとsend()メソッドでサーバにデータを送信し、onmessageイベントでサーバから返されたデータを受信できます.
3つのフロントエンドのwebSocketプロパティ
フロントエンドjs webSocektオブジェクトの作成
var Socket = new WebSocket(url, [protocol] );

WebSocketオブジェクトのプロパティを以下に示します.上記のコードを使用してSocketオブジェクトを作成したとします.
ツールバーの
説明
Socket.readyState
読み取り専用プロパティreadyStateは、次の値で接続ステータスを表します.
  • 0-接続が確立されていないことを示します.
  • 1-接続が確立され、通信可能であることを示します.
  • 2-接続がシャットダウンされていることを示します.
  • -接続が閉じているか、接続が開かないことを示します.

  • Socket.bufferedAmount
    読み取り専用プロパティbufferedAmountはsend()によってキューに入れられて転送を待っていますが、まだ発行されていないUTF-8テキストバイト数です.
    WebSocketイベント
    以下はWebSocketオブジェクトに関するイベントです.上記のコードを使用してSocketオブジェクトを作成したとします.
    ≪イベント|Events|ldap≫
    イベントハンドラ
    説明
    open
    Socket.onopen
    接続確立時にトリガー
    message
    Socket.onmessage
    クライアントがサービス側データを受信するとトリガーされます
    error
    Socket.onerror
    通信エラー発生時にトリガー
    close
    Socket.onclose
    接続クローズ時にトリガー
    WebSocketメソッド
    WebSocketオブジェクトに関するメソッドを以下に示します.上記のコードを使用してSocketオブジェクトを作成したとします.
    方法
    説明
    Socket.send()
    接続を使用したデータの送信
    Socket.close()
    接続を閉じる
    四バックエンドwebSocket作成
    ここではspring統合webSocketを使用しています
    1.まずWebSocketのmavenパッケージをインポートする必要があります
    
      org.springframework
      spring-websocket
      ${spring.version}
    

    2.webSocketのプロセッサを作成する
    public class MyWebSocketHandler implements WebSocketHandler {
    
    .......    
    }

    次はwebSocketHandlerのインタフェースの方法です
    public interface WebSocketHandler {
    
       /**
        *           
        */
       void afterConnectionEstablished(WebSocketSession session) throws Exception;
    
       /**
        *           
        */
       void handleMessage(WebSocketSession session, WebSocketMessage> message) throws Exception;
    
       /**
        *             
        */
       void handleTransportError(WebSocketSession session, Throwable exception) throws Exception;
    
       /**
        *           
        */
       void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception;
    
       /**
        *         
        */
       boolean supportsPartialMessages();
    
    }

    WebSocketの設定
    1.注記方式
    まずwebSoceketConfigurerを実現
    import org.springframework.web.socket.config.annotation.EnableWebSocket;
    import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
    import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
    
    @Configuration
    @EnableWebSocket
    public class WebSocketConfig implements WebSocketConfigurer {
    
        @Override
        public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    
        }
    
        @Bean
        public WebSocketHandler myHandler() {
            return new MyHandler();
        }
    
    }

    2.xml方式
    spring-servlert.xmlでクラスを構成しspringコンテナに入れる