前回からの続きです。今回はWebSocketのクライアント側のコードを紹介します。
モジュールのインストール
下記ページのモジュールを使います。インストールは、pipでコマンドを実行します。
https://github.com/Pithikos/python-websocket-server
sudo pip3 install websocket-server
クライアント側のコード(wsclient.py)
import time
from websocket import create_connection
ws = create_connection("ws://192.168.1.10:9999/")
while True: ws.send("Hello, World")
time.sleep(1)
result = ws.recv()
print("Received '%s'" % result)
time.sleep(1)
ws.close()
それではコードの説明をしていきます。難しくありませんね。
・ws = create_connection("ws://192.168.1.10:9999/")
⇒サーバーのIPアドレス、ポートを指定してクラスをnewし、サーバーと接続します。
・ws.send("Hello, World")
⇒サーバーにデータを送信します。
・result = ws.recv()
⇒サーバーからデータを受信します。
・ws.close()
⇒今回のサンプルで無限ループにしていますので、この処理に到達しませんが、サーバーとの接続をクローズします。
動作確認
wscatという簡単にwebsocket通信ができるアプリがありますので、それを使って動作確認をします。下記のコマンドでインストールします。npmを先にインストールする必要があります。
sudo apt-get install npm sudo npm install -g wscat
これでwscatのインストールは完了です。それでは動作させていきます。3つターミナルを立ち上げます。
・ターミナル1 ⇒ 前回ブログのwsserver.pyを起動
・ターミナル2 ⇒ 今回ブログのwsclient.pyを起動
・ターミナル3 ⇒ 下記のコマンドを実行します。
wscat -c ws://192.168.1.10:9999
これでWebSocketサーバーと接続できます。接続すると、"Hello, World"と1秒おきに表示されると思います。ターミナル3で適当な文字列をプロントから入力してみてください。ターミナル2に送信した文字が表示されるはずです。
次回は最終目標のWebページの値をリアルタイムで更新する方法を紹介したいと思います。