次の方法で共有


PartySendMessageQueuingConfiguration

メッセージの送信時にローカル キューの動作を変更するためのオプションの構成パラメーター。

構文

struct PartySendMessageQueuingConfiguration {  
    int8_t priority;  
    uint32_t identityForCancelFilters;  
    uint32_t timeoutInMilliseconds;  
}  

メンバー

priority int8_t

他のローカル エンドポイントから送信されたチャット データやメッセージに対する、、ローカルにキューイングされたメッセージの優先順位。

priority は、c_minSendMessageQueuingPriority から c_maxSendMessageQueuingPriority までの値でなければなりません。 数字が大きいほど、相対的に優先度が高い (最初に送信される) ことを示します。 PartyLocalEndpoint::SendMessage() に PartySendMessageQueuingConfiguration 構造体が 指定されていない場合は、規定で符号付き整数の範囲のちょうど真ん中 (0) に位置する c_defaultSendMessageQueuingPriority です。

送信キューの優先順位は、特定のローカル エンドポイントから送信されたメッセージの送信または配信の順序を変更するものではありません。 これは、異なるローカル エンドポイントからのメッセージや、エンドポイントと内部送信されたチャット データとの間のメッセージの順序にのみ影響し、優先順位 c_chatSendMessageQueuingPriority を使用します。 最も高い優先度のメッセージを持つローカル エンドポイントの送信キューには、最初に転送の対象となるメッセージが含まれます。 ローカル エンドポイントによってキューに入れられた残りのすべてのメッセージが同じ優先順位の場合、個々のメッセージは PartyLocalEndpoint::SendMessage() 呼び出しが発生したのと同じ順序で送信できます。

動作を考慮する 1 つの方法として、優先度の高いメッセージは、同じローカル エンドポイントからの以前のすべてのメッセージの優先度を自動的に同じ値に上げ、優先度の高いメッセージをタイムリーに配信されるようにします。ただし、ローカル エンドポイントが以前に送信したメッセージの連続的な配信は予定どおりです。 他のローカル エンドポイントは、独自の送信シーケンスを持っているため、このような順序の保証はありません (ただしパーティー ライブラリでは、可能な限り元々送信された順序を維持するよう、ベスト エフォートの試行が行われます)。

メッセージの送信キューの優先順位は、接続品質や受信者の応答性などにより、送信するバイト数が接続のサポート範囲を超えた場合に重要となります。 より重要なメッセージをより高い優先度で送信することで、限られたネットワーク リソースを最初に使用する機会を得ることができます。 メッセージを送信する際に、正常に送信できる速度を超えて送信し続けると、優先度の低いメッセージが「不足状態」に陥り、関連するローカル エンドポイントの送信キューが増え続けてしまいます。 PartyLocalEndpoint::CancelMessages() を使用して不要なメッセージを取り消し、timeoutInMilliseconds フィールドを使用してキューに入ったメッセージを自動的にタイムアウトするか、PartyLocalEndpoint::SendMessage() 呼び出しのサイズや頻度を減らすことで、このような潜在的な増加を管理してください。

identityForCancelFilters uint32_t

キャンセル フィルター式でメッセージの適用性を評価するときに使用する、呼び出し側で定義された値です。

このメッセージ ID 値は、呼び出し元固有の意味を持つことがあり、オプションで提供されるキャンセル フィルター式とメッセージが一致するかどうかを評価するときに PartyLocalEndpoint::CancelMessages() によって使用される以外のパーティ ライブラリでは解釈されません。

PartyLocalEndpoint::SendMessage() に PartySendMessageQueuingConfiguration 構造体が指定されていない場合、規定値の 0 が使用されます。

メッセージを取り消すと、ネットワーク状態が悪い場合にローカル送信キューが過度に増加するのを防ぐことができます。 特定のフィルター式に一致するメッセージ ID の取り消しは、最新の情報を定期的に送信するメッセージのカテゴリがある場合に有効です。また、以前にキューに入れられた旧メッセージの代わりに、まだ送信機会を待っているメッセージがある場合にも有効です。 取り消しは、損失が致命的ではなく、より重要なキューに入れられたメッセージの代わりに送信を試みる価値がない、便宜的メッセージのインスタンスまたはカテゴリがある場合にも役立ちます。

このローカル ID 値は、送信されたデータ ペイロードの一部ではありません。 メッセージの送信が開始され、PartyLocalEndpoint::CancelMessages() によってローカルの送信キューから削除できなくなると、適用できなくなります。

timeoutInMilliseconds uint32_t

最大時間 (ミリ秒単位) は、メッセージが Party 管理対象の送信キューで送信を待機できる時間です。

接続品質や受信機の応答性などにより、このタイムアウトが経過してもメッセージの送信が開始されない場合、メッセージは送信されずに中止され、キューから削除されます。

timeoutInMilliseconds の値が 0 の場合、タイムアウトはなく、メッセージが正常に送信されるか、明示的に取り消されるか、リモート切断などの何らかの転送エラーが発生するまでキューに入ったままであることを示します。 PartyLocalEndpoint::SendMessage() に PartySendMessageQueuingConfiguration 構造体が指定されていない場合の規定値は 0 です。

メッセージ送信キューのタイムアウトで、ネットワークの状態が悪い場合に送信キューが過剰になるのを防ぐことができます。 これは、時間依存の定期的なデータを含むメッセージに適しています。より新しい完全な代替メッセージが定期的に送信され、個々のメッセージが失われても致命的ではないため、陳腐化したメッセージを送信することは帯域幅の無駄になるからです。

このタイムアウト値は、Party 管理対象の送信キューにだけ影響します。 メッセージの実際の送信にかかる時間 (環境の待機時間) や、該当する場合受信者が送信を確認するまでの待ち時間には影響しません。

このタイムアウト値は、ピアツーピア接続なしで直接ターゲットに送信する場合に 2 回評価されます。1 回目は、クライアントのローカル送信キューを透過的クラウド リレーに送信する場合で、リレーへのローカル環境条件と転送速度が影響します。2 回目はリレー自体で評価が行われ、メッセージに割り込んでから、異なるネットワーク条件、転送速度、またはリモート ターゲットの応答性に基づいて転送されることがあります。

要件

ヘッダー: Party.h

関連項目

パーティーのメンバー
PartyLocalEndpoint::SendMessage