python で websocket を使った通信をする場合
僕のように某生配信プラットフォームのwebsocketを取ってこようと思うと、ここのを使うのが一般的だと思います。
https://github.com/websocket-client/websocket-client
あまり使っている人がおらず、正直、コミュニティは活発っぽくないです。
バージョンによって挙動が違う(らしい)です。
ですので、ぼくは現行動いているバージョンから変えるつもりはありません。
僕は
pip install websocket-client
でインストールしました。
某生配信プラットフォームは、utf-8以外の文字も使えるっぽいので、特定のユーザーが現れると、デコードエラーでプログラムが落ちます。
当初は非常に不思議で、まったく原因がわからなかったのですが、特定の配信者のところに現れる特定のユーザー名が原因でした。
この現象はchromeのDeveloper Toolでwebsocketの通信を眺めていても、特定ユーザーが何かするたびに落ちて、再接続してました。
おそらく、配信プラットフォーム側がutf-8以外の文字列もOKにしていることが原因だと思います。
ライブラリのソースコードを見ていると、skip_utf8_validation=False というのがあるのですが、これをTrueにしても落ちます。
ですので、僕は、ライブラリのソースコードのdecodeとencode部分をすべて、ignoreをつけて力業で対処しています。
ライブラリの原因箇所の特定や、英語での提案をする元気は無いので誰かやってください。
全く同じissue が こことかstackoverflowにもあがってるのですが、おそらく開発者側も再現性がないので直せないのだと思います。
たぶん日本独特の問題なのかな?
こんな知識誰か役に立つんですかね?