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オブジェクトの作成
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パッケージをインポートする必要があります
2.webSocketのプロセッサを作成する
次はwebSocketHandlerのインタフェースの方法です
WebSocketの設定
1.注記方式
まずwebSoceketConfigurerを実現
2.xml方式
spring-servlert.xmlでクラスを構成しspringコンテナに入れる
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は、次の値で接続ステータスを表します.
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コンテナに入れる