はじめに
「シェルスクリプトマガジンVol81」のWebSocketの記事を読んで試してみたので備忘録。
サーバ、クライアントのソースは同誌をベースにさせていただいたので割愛。
環境
RedHat EnterpriseLinux 8.7
Python 3.8
プログラムおよび環境設定
サーバ側
サンプルソースでは使用しているasyncio.run()
はPython3.7以降の機能であるため、Python3.8を使用することにした。
# su
# pip3.8 install websockets
# exit
$ cd ~/webchat_server
$ ./server.py
クライアント側
まずは、サーバプログラムの動作確認のため、ポート開放してブラウザでの確認を行った。
ポート未開放の場合
# su
# firewall-cmd --add-port=ポート番号/tcp
# exit
プログラムは以下の通り
/www/html/webchat
- index.html
- client.js
Apacheを介してSSLで通信するように修正
1. Apacheの設定を変更して再起動。
wstunnelを有効にして/chatへのアクセスをWebSocketサーバに向ける。
http.conf
-#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
+LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
extra/httpd-ssl.conf
+ProxyPass /chat ws://localhost:ポート番号/
+ProxyPassReverse /chat ws://localhost:ポート番号/
# systemctl restart httpd
2. client.jsのURLを変更
client.js
-let socket=new WebSocket("ws://192.168.1.106:8765/");
+let socket=new WebSocket("wss://192.168.1.106/chat/");
3. 単体で動作させたときと同様にWebからアクセスする
https://192.168.1.106/chat/
参考
「シェルスクリプトマガジンVol81」