libro
www.tuyano.com
JavaScriptによるHTML5プログラミング入門

WebSocketによるクライアント=サーバー通信 (5/7)

作成:2010-12-17 14:59
更新:2010-12-17 14:59

■echo_wsh.pyの中身を見てみよう

では、サーバー側ではどのような処理をしているのでしょうか。JavaScriptからは少し外れてしまいますが、今回利用したecho_wsh.pyの中身をちょっと見てみることにしましょう。

下のリストが、そのスクリプトです。冒頭にある「from mod_pywebsocket import msgutil」というのは、pywebsocketのライブラリをロードするためのものです。その後には、2つの関数が書かれています。
def web_socket_do_extra_handshake(request):
    ……実行する処理……

def web_socket_transfer_data(request):
    while True:
        ……実行する処理……
web_socket_do_extra_handshakeは、クライアントとの通信が接続される際の処理です。特に何もしなければ「pass」としてそのままパスをしておきます。

その後のweb_socket_transfer_dataが、実際にクライアントとやり取りしている部分です。ここでは、while True:という繰り返しで、エンドレスに処理を繰り返しています。つまり、ここで通信中に何か送られてきたら送り返す、ということを行っていたわけです。ここでは、以下の2つの文を実行しています。
※クライアントから送られてきたデータを受け取る
変数 = msgutil.receive_message(request)

※クライアントにデータを送る
msgutil.send_message(request, 値 )

この2つさえわかれば、サーバー側の処理も簡単につくことができます。Python自体は、日本ではそれほど馴染みのある言語とはいえませんが、ちょっとした計算ぐらいなら、少し覚えれば作れるでしょう。このスクリプトを修正して、自分なりのサーバー処理を作ってみると面白いでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

from mod_pywebsocket import msgutil


_GOODBYE_MESSAGE = 'Goodbye'


def web_socket_do_extra_handshake(request):
    pass  # Always accept.


def web_socket_transfer_data(request):
    while True:
        line = msgutil.receive_message(request)
        msgutil.send_message(request, line)
        if line == _GOODBYE_MESSAGE:
            return
※関連コンテンツ

「JavaScriptによるHTML5プログラミング入門」に戻る