Web のクライアント通知の話
- mikoto2000
- 710
- 2
- 0
- 0
Webシステム上で AさんからBさんメッセージを送った場合、リアルタイムにBさん側に「✉メッセージ!」を表示するのって 低スキルおじさん的には ✅メッセージをDBに格納 ✅Bさんから1秒おきとかにDBにSELECT投げて ✅自分宛てのがあったら通知 って実装が手っ取り早いと思ってんだけど 別案ある…?
2023-02-26 08:10:00WebSocket か SSE か ロングポーリング が無難だと思う。保存と通知は別実装にすべき。 twitter.com/yontengop/stat…
2023-02-26 11:12:51ロングポーリングって言い方悪かったな、いにしえの Comet だと通知向け、ライブチャットとかは無理に WebSocket ではなく HTTP/2 Stream とか使う方が無難だとおもう。
2023-02-26 11:43:12ストリーム API - Web API | MDN developer.mozilla.org/ja/docs/Web/AP… ということで今サーバーからちょろちょろ流す系はこれが無難なのではないか。
2023-02-26 12:01:58メッセージング系は Stream API で、通知系はロングポーリングで充分だと思う。自分は両方同時に使うので WebSocket にしてますが ... (Erlang なので WebSocket が恐ろしく楽というのはあります)
2023-02-26 12:03:09まとめると WebSocket は最終手段くらいで、可能な限りは使わない方がいい(サーバーサイドの実装が完全に WebSocket 専用になってしまう) 。ブラウザのストリーミングは Stream API を使い、通知はロングポーリングで充分。というのが自分の認識です。WebRTC は論外。
2023-02-26 12:07:38安易に WebSocket 選択して失敗した人って意外にいそう。基本的には自前よりは Pusher とか使った方が楽な場合は多いのは否めない。pusher.com/channels/prici… 月 $899 で 1 日 6000 万メッセージまで、同時接続数 2 万まで。ほとんどの場合は足りるでしょ ... 。
2023-02-26 14:23:46ブラウザアプリならロングポーリングで十分だと思いますし、スマホアプリなら APNs などを利用するのではないかと。 twitter.com/aqz_tmin/statu…
2023-02-26 17:04:27WebSocket がっつり使ってない人ほど、プッシュ通知にはWebSocket を使うべきと誤解してそうなので、いやそれロングポーリングで十分でしょと伝えていきたい。
2023-02-26 17:05:42wss:// 通さないプロキシとか upgrade 落とすプロキシとか connection 書き換えるプロキシとか 30rps 程度で RST 返すライブラリとか到達順が保証されないとかあるし何より通信量が爆発するので本当に通知を WebSocket でやります?もうちょっと設計練りませんか?というのはお伝えしていきたい twitter.com/voluntas/statu…
2023-02-26 17:57:42WebSocket が悪いとかは全然なくて、オーバーキルじゃない?本当に WebSocket 必要なの?双方向必要?ほんとに?というお気持ちです。
2023-02-26 18:54:16