VR中に地震があった時にすぐ気が付きたいよねー、というお話が発端です。
調べたところGoogleChromeの拡張機能の「強震モニタ」というものがありました。
NeosVRでは外部通信としてWebsocketが利用することができます。
上記を中継するサーバがあれば実現できるということがわかり作ることにしました。
緊急地震速報をWebsocketにて接続しているクライアントに通知するためのWrapperになります。 このWebアプリでは下記の機能を提供しています。
- 強震モニタからのPOSTリクエストを受け取るWebAPIのエンドポイント
- 緊急地震速報をNeosVR内から受け取るためのWebsocketのエンドポイント
強震モニタには外部WebAPIのエンドポイントに対して地震情報をJson形式でPOSTする機能があります。
この機能のエンドポイントとして実装を行いました。
// TODO
- ConoHaVPS (vCPU:1,Mem:512MB)
- nginx
- 443にてListen
- 証明書はLet's Encrypt
- gunicorn
- uvicorn
- systemdにてgunicornをデーモン化
- gunicornではuvicornをマルチプロセス化して起動
- pyenvを利用
- systemdにて起動
- ufwにて制御
- 言語:Pytnon3系
- フレームワーク:FastAPI
- 1.緊急地震速報クライアントからWebsocketのエンドポイントに接続
- 2.緊急地震速報が発報されモニタプラグインからWebAPIのエンドポイントにPOSTされる
- 3.1でコネクションを張っている緊急地震速報クライアントに対してPOSTのタイミングでWebsocketのSendで送信(複数コネクションがあれば全てに対してSend)
- 4.緊急地震速報クライアントで通知されたJsonを解析し該当の音声データにてワールド内にいるユーザに対して通知
// TODO 調整中
// TODO