画像認識ログインをするのに、いちいちsnapボタンを押すのは面倒。
リアルタイムで画像取得して、パターンマッピングにかけたい。
方法としては、以下の3つぐらいが思いつく。
1. websocketを使用してサーバー&クライアントを常時接続状態で画像処理
2. opencv.jsを使用してクライアント上で画像処理を完結
3. Ajaxを取り入れ、見た目だけリアルタイム処理にする。
(実際は定期的なサーバーポスト)
個人的には1.をやってみたいが、サーバーの負荷が心配。
ちなみに「WebSocket」は、 サーバー側とユーザー側を常時接続状態にしておいて双方向通信ができるようにする技術のこと。
参考は以下のサイト。
Flaskとwebsocketを使った簡易的なチャットを開発する
https://note.com/shimakaze_soft/n/n99b47eccd915
サーバーはFlaskで建てるつもり。
とりあえず、必要なパッケージをインストール。
・ Flask-sockets
・ gunicorn
・ gevent
・ gevent-websocket
よくわからんのもいるので、ちょいと調べる。
gunicornはUNIX 向けの Python WSGI HTTPサーバー。
なんかflaskとかが持ってる内部サーバーより動作が速いらしい。
(詳しくはまた別記事で...)
さらに、WSGI(Web Server Gateway Interface)とは、サーバーとWebアプリケーションをつなぐ共通のインターフェースをPythonで定義したもの。
gevent は libev を元にした並行ライブラリ。
socket(s)は察して。
上記のサイトで一通り組んだが一か所エラーが出たため修正。
server = WSGIServer(
host_port,
app,
handler_class=WebSocketHandler
)
server.serve_forever()
上記を
with make_server('localhost', 8080, app) as httpd:
print("Serving HTTP on port 8080...")
httpd.serve_forever()
と修正。
元々は
make_server('localhost', 8080, app, handler_class=WebSocketHandler)~
としていたが、一切動かなかったのでハンドラーをなくした。
これでうまくいくか!?
エラーなく走ったが、なぜかlocalhost:8080/にアクセスしても
接続されない。