Html5-websocket
HTML5-WebSockets
WebSocketsは、単一のソケット上で動作し、HTML 5準拠のブラウザーのJavaScriptインターフェースを介して公開される、Webアプリケーション用の次世代双方向通信テクノロジーです。
WebサーバーとのWebソケット接続を取得したら、* send()メソッドを呼び出してブラウザーからサーバーにデータを送信し、 *onmessage イベントハンドラーでサーバーからブラウザーにデータを受信できます。
以下は、新しいWebSocketオブジェクトを作成するAPIです。
var Socket = new WebSocket(url, [protocal] );
ここで、最初の引数urlは、接続するURLを指定します。 2番目の属性protocolはオプションであり、存在する場合、接続が成功するためにサーバーがサポートする必要があるサブプロトコルを指定します。
WebSocketの属性
WebSocketオブジェクトの属性は次のとおりです。 上記のようにSocketオブジェクトを作成したと仮定します-
Sr.No. | Attribute & Description |
---|---|
1 |
Socket.readyState readonly属性readyStateは、接続の状態を表します。 それは次の値を持つことができます-
|
2 |
readonly属性bufferedAmountは、send()メソッドを使用してキューに入れられたUTF-8テキストのバイト数を表します。 |
WebSocketイベント
以下は、WebSocketオブジェクトに関連付けられたイベントです。 上記のようにSocketオブジェクトを作成したと仮定します-
Event | Event Handler | Description |
---|---|---|
open | Socket.onopen | This event occurs when socket connection is established. |
message | Socket.onmessage | This event occurs when client receives data from server. |
error | Socket.onerror | This event occurs when there is any error in communication. |
close | Socket.onclose | This event occurs when connection is closed. |
WebSocketメソッド
以下は、WebSocketオブジェクトに関連付けられたメソッドです。 上記のようにSocketオブジェクトを作成したと仮定します-
Sr.No. | Method & Description |
---|---|
1 |
Socket.send() send(data)メソッドは、接続を使用してデータを送信します。 |
2 |
Socket.close() close()メソッドは、既存の接続を終了するために使用されます。 |
WebSocketの例
WebSocketは、クライアントとサーバー間の標準的な双方向TCPソケットです。 ソケットはHTTP接続として開始され、HTTPハンドシェイク後にTCPソケットに「アップグレード」されます。 ハンドシェイク後、どちらの側もデータを送信できます。
クライアント側のHTMLおよびJavaScriptコード
このチュートリアルを書いている時点では、WebSocket()インターフェースをサポートしているWebブラウザーはわずかです。 Chrome、Mozilla、Opera、Safariの最新バージョンで次の例を試すことができます。
<!DOCTYPE HTML>
<html>
<head>
<script type = "text/javascript">
function WebSocketTest() {
if ("WebSocket" in window) {
alert("WebSocket is supported by your Browser!");
//Let us open a web socket
var ws = new WebSocket("ws://localhost:9998/echo");
ws.onopen = function() {
//Web Socket is connected, send data using send()
ws.send("Message to send");
alert("Message is sent...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function() {
//websocket is closed.
alert("Connection is closed...");
};
} else {
//The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
</head>
<body>
<div id = "sse">
<a href = "javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>
pywebsocketをインストールする
上記のクライアントプログラムをテストする前に、WebSocketをサポートするサーバーが必要です。 Apache HTTPサーバー用のWebソケット拡張機能を提供することを目的としたhttps://code.google.com/p/pywebsocket/[pywebsocket]からmod_pywebsocket-x.x.x.tar.gzをダウンロードし、次の手順に従ってインストールします。
- ダウンロードしたファイルを解凍して解凍します。
- pywebsocket-x.x.x/src/ ディレクトリ内に移動します。
- $ python setup.py build
- $ sudo python setup.py install
- 次に、文書を読みます-
- $ pydoc mod_pywebsocket
これにより、Python環境にインストールされます。
サーバーを起動する
*pywebsocket-x.x.x/src/mod_pywebsocket* フォルダーに移動し、次のコマンドを実行します-
$sudo python standalone.py -p 9998 -w ../example/
これにより、ポート9998でリッスンしているサーバーが起動し、echo_wsh.pyが存在する-wオプションで指定された handlers ディレクトリが使用されます。
Chromeブラウザーを使用して、最初に作成したhtmlファイルを開きます。 ブラウザーがWebSocket()をサポートしている場合、ブラウザーがWebSocketをサポートしていることを示すアラートが表示され、最後に「WebSocketを実行」をクリックすると、サーバースクリプトからGoodbyeメッセージが送信されます。