メッセージ履歴の処理

ここでは、Photon Cloudがチャットメッセージの履歴を管理する方法と、Chatクライアントを介してそれを処理する方法について説明します。

##公開チャンネル

Photon Cloudは、チャンネルが存在する限り、チャンネルごとに最後に公開されたメッセージを保持します。
空のチャンネルは、数秒のタイムアウト後にサーバー上で破棄されます。すべてのメッセージがクリーンアップされます。
履歴を保持するには、Photon Chat WebHooksを使用します。

Photon Cloudは、公開チャットチャンネルごとに最大100件のメッセージを履歴に保持します。

チャンネルを購読する場合、チャットクライアントは、履歴から受信するメッセージの数を設定できます(存在する場合)。
これは、historyLen(またはmessagesFromHistory)パラメーターを使用して実行できます。

  • -1:すべての未受信メッセージ、最大100。
  • 0:なし。 (デフォルト)
  • 1> = x> = 100:xまでのすべての欠損したメッセージ。
    これは、特に少数を表示する場合や、一度に受信し処理するメッセージが多すぎるとパフォーマンスが低下する可能性がある場合に、大量の受信を回避するのに役立ちます。
  • 他の値は許可されません。

チャンネル内で発行された各メッセージには一意のIDがあります。
メッセージIDは整数で、1から始まり、新しいメッセージが発行されるたびに増分されます。
チャットチャンネルの履歴は限られていますが、サーバーはチャンネルごとにチャンネル内で公開された最後のメッセージIDを追跡します。

:ユーザーが573番のメッセージを時系列に公開すると、チャンネルの作成以降のすべてのユーザーからのすべてのメッセージがカウントされます。

  • 発行されたメッセージのIDは573になります
  • チャンネルの履歴には100個のメッセージがあります:MsgID=474からMsgID=573
  • チャンネルの最後のメッセージIDは573に設定されます

クライアントが予期しない切断から回復し、同じチャンネルに購読する場合、またはクライアントがアプリケーションを一時停止した後に古いチャンネルに戻る場合、サーバーから'delta'または'diff'のみを受信するべきです。
以前に受信したメッセージを取得する必要はありません。
クライアントが不在のときにチャンネルで公開されたメッセージのみを受信する必要があります。受信できなかったメッセージのみ。
Photon Chatクライアントは、 lastMsgId(または同時に複数のチャンネルに購読する場合はlastMsgIDs)パラメーターを使用して、サーバーにそのチャンネルのサーバーから受信した最後のメッセージのIDを伝えることができます。
このようにして、サーバーは、そのメッセージの後に発行されたメッセージ(ある場合)のみを送り返すことができます。
これらのメッセージには、送信されたlastMsgIdよりも高いIDがあります。
もちろん、ユーザーが長時間切断されたままで、この不在中に発行されたメッセージが履歴メッセージの容量を超えた場合、一部のメッセージはクライアントに届きません。

:ユーザーは、同じチャンネルでID 218の最後のメッセージを受信した後、チャンネルから登録解除します。
チャンネルはメッセージID 603に到達し、持つ履歴に100個のメッセージ、504から603のIDがあります。
この時点で、同じユーザーが同じチャンネルに購読していた場合、219〜503のIDのメッセージを見逃していたことになります。

lastMsgIdを適切に使用するための要件は、クライアントがチャンネルごとに受信した最後のメッセージのIDを追跡することです。
一部のクライアントSDKは、アプリケーションセッション全体のチャンネルごとに最後のメッセージIDを保存および公開する場合がありますが、デバイスでローカルにキャッシュするか、必要に応じて独自のバックエンドで保持する必要があります。

また、チャンネルごとにhistoryLenおよびlastMsgIdパラメーターを組み合わせて、最後に欠損したメッセージのみを受信することもできます(存在する場合)、それらのすべて(historyLen = -1)または特定の数(0 < 100)。
ただし、 lastMsgId historyLen == 0を使用することは意味がありません。

:ユーザーは、同じチャネルでID 777の最後のメッセージを受信した後、そのチャネルから登録解除します。
チャンネルはメッセージID 801に到達し、履歴に、702から801のIDを持つ100個のメッセージがあります。
同じユーザーが同じチャンネルに購読して、 lastMsgId = 777と historyLen = -1を送信します。
この場合、サーバーはID778から801の最後の23メッセージを送り返します。

プライベートチャット

Photon Chatでは、オフラインユーザーでもプライベートメッセージを送信できます。
プライベートメッセージがオフラインユーザーに送信される場合、それらのメッセージは、ユーザーが接続するか送信者が切断するまでPhoton Cloudに保存されます。

Photon Cloudは、2人のユーザーのうちの1人が接続している限り、2人のユーザー間のプライベートな会話ごとに最大100個のメッセージを履歴に保持します。
両方のユーザーが切断されると、プライベート会話は削除されます。

Back to top