WebSocketによるクライアント=サーバー通信 (5/7)
作成:2010-12-17 14:59
更新:2010-12-17 14:59
更新:2010-12-17 14:59
■echo_wsh.pyの中身を見てみよう
では、サーバー側ではどのような処理をしているのでしょうか。JavaScriptからは少し外れてしまいますが、今回利用したecho_wsh.pyの中身をちょっと見てみることにしましょう。
下のリストが、そのスクリプトです。冒頭にある「from mod_pywebsocket import msgutil」というのは、pywebsocketのライブラリをロードするためのものです。その後には、2つの関数が書かれています。
その後のweb_socket_transfer_dataが、実際にクライアントとやり取りしている部分です。ここでは、while True:という繰り返しで、エンドレスに処理を繰り返しています。つまり、ここで通信中に何か送られてきたら送り返す、ということを行っていたわけです。ここでは、以下の2つの文を実行しています。
この2つさえわかれば、サーバー側の処理も簡単につくことができます。Python自体は、日本ではそれほど馴染みのある言語とはいえませんが、ちょっとした計算ぐらいなら、少し覚えれば作れるでしょう。このスクリプトを修正して、自分なりのサーバー処理を作ってみると面白いでしょう。
下のリストが、そのスクリプトです。冒頭にある「from mod_pywebsocket import msgutil」というのは、pywebsocketのライブラリをロードするためのものです。その後には、2つの関数が書かれています。
def web_socket_do_extra_handshake(request):web_socket_do_extra_handshakeは、クライアントとの通信が接続される際の処理です。特に何もしなければ「pass」としてそのままパスをしておきます。
……実行する処理……
def web_socket_transfer_data(request):
while True:
……実行する処理……
その後のweb_socket_transfer_dataが、実際にクライアントとやり取りしている部分です。ここでは、while True:という繰り返しで、エンドレスに処理を繰り返しています。つまり、ここで通信中に何か送られてきたら送り返す、ということを行っていたわけです。ここでは、以下の2つの文を実行しています。
※クライアントから送られてきたデータを受け取る
変数 = msgutil.receive_message(request)
※クライアントにデータを送る
msgutil.send_message(request, 値 )
この2つさえわかれば、サーバー側の処理も簡単につくことができます。Python自体は、日本ではそれほど馴染みのある言語とはいえませんが、ちょっとした計算ぐらいなら、少し覚えれば作れるでしょう。このスクリプトを修正して、自分なりのサーバー処理を作ってみると面白いでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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プログラミング入門」に戻る