制限事項の例
メッセージングを提供するAgoraやTencentの制限事項を例に解説します。AgoraのSignalingSDKではチャンネル毎に200件/秒以内(チャンネル参加者数が1,000人未満の場合)を推奨、TencentのChatでは40件/秒の制限になっています。
参考リンク
Signaling Limitations(Agora)
使用制限(Tencent Chat)
実装の改善例
連続したギフトやハートの処理要件
要件
・ハートを飛ばしてライブ配信の盛り上がりを演出
・応援する配信者へ積極的にギフトを送る
改善前の実装
- クライアントからハート又はギフトを送信
- サーバー側でデータ保存と決済処理を実施
- サーバー側からのレスポンス後、クライアントからメッセージングでハート又はギフト送信の旨をブロードキャスト
- 配信者や他の視聴者がメッセージを受信してUI更新
問題点
- 送信側が連打できる為、メッセージの受信がスパイクして端末の負荷が上昇する
- 決済処理やデータ保存用サーバーの負荷が上昇する
- 大量にギフトの画像が流れていって読み取れない
改善のポイント
パターン1
ギフトの枚数や、ハートの数を入力するUIを追加し、件数とハート又はギフトの情報を合わせ、1回にまとめて送信
パターン2
クライアント側でボタンクリック数をカウントし、数秒待機してからクリック数とハート又はギフトの情報を合わせて1回送信
大量のチャット
要件
・10,000人規模のライブ配信でチャットをスムーズに流したい
改善前の実装
- メッセージング用に全員が1つのチャンネルに接続
- メッセージの送信
- 配信者や他の視聴者がメッセージを受信してUI更新
問題点
- メッセージの受信がスパイクして端末の負荷が上昇する
- PaaS側の負荷が上昇し、メッセージの遅延や送信できなくなる
- 大量にチャットが流れていって読み取れない
改善のポイント
パターン1
視聴者をランダムで複数のチャンネルに分けて参加させる。数百人規模のグループであればメッセージも自然に流れ、盛り上がりの様子も失われない。
パターン2
チャットの投稿数が増えてきたらメッセージングですぐにメッセージを送信せずに、タイマー等で遅延させて送信する。
ベストプラクティス
PaaSやSDKを提供するベンダーは、設計や実装についてベストプラクティスをドキュメントとして公開しているケースもあります。コンセプトが実装中のサービスに対する同じソリューションなので参考になる場合が多いと思います。
例:Agora SignalingSDK、Tencent Chat