語法
成員
priority int8_t
本機佇列中的訊息相對於聊天資料或從其他本機端點傳送之訊息的優先順序。
priority 必須是介於 c_minSendMessageQueuingPriority 與 c_maxSendMessageQueuingPriority 之間 (含) 的值。數字越高,代表相對於較低數字的優先順序越高 (會先傳輸)。未提供 PartySendMessageQueuingConfiguration 結構給 PartyLocalEndpoint::SendMessage() 時,預設值為 c_defaultSendMessageQueuingPriority,剛好位於帶正負號整數範圍的正中間 (零)。傳送佇列優先順序不會修改從指定本機端點傳送之訊息的傳輸或傳遞順序。它只會影響來自不同本機端點之訊息的順序,或端點與內部傳輸之聊天資料 (使用優先順序
c_chatSendMessageQueuingPriority) 之間的順序。具有最高優先順序值之訊息的本機端點傳送佇列,其訊息會最先符合傳輸資格。如果本機端點排入佇列的所有剩餘訊息具有相同的優先順序,則個別訊息會依其 PartyLocalEndpoint::SendMessage() 呼叫發生的相同順序符合傳輸資格。理解此行為的一種方式是:高優先順序訊息會自動將來自同一本機端點的所有先前訊息的優先順序提升至相同值,以確保高優先順序訊息能及時傳遞,同時不會破壞該本機端點先前傳輸之訊息的循序傳遞預期。其他本機端點有自己的傳送順序,因此沒有這類順序保證 (不過 Party 程式庫會盡力在可能的情況下保留它們原本的傳送順序)。
當因連線品質或接收者回應能力,導致要傳送的位元組多於連線所能支援的量時,訊息的傳送佇列優先順序就很重要。以較高優先順序傳送較重要的訊息,可確保它們最先有機會使用有限的網路資源。如果您持續以超過能成功傳輸的速度傳送訊息,較低優先順序的訊息可能會「飢餓」,而相關聯的本機端點傳送佇列將持續增長。請務必管理這種可能的增長,方法包括使用 PartyLocalEndpoint::CancelMessages() 取消多餘的訊息、使用
timeoutInMilliseconds 欄位讓排入佇列太久的訊息自動逾時,或直接減少 PartyLocalEndpoint::SendMessage() 呼叫的大小和/或頻率。
identityForCancelFilters uint32_t
呼叫端定義的值,用於評估訊息是否適用於取消篩選運算式。
此訊息身分值可以具有任何呼叫端特定的意義,Party 程式庫除了在 PartyLocalEndpoint::CancelMessages() 評估訊息是否符合選擇性提供的取消篩選運算式時使用之外,不會對其進行解譯。未提供 PartySendMessageQueuingConfiguration 結構給 PartyLocalEndpoint::SendMessage() 時,會使用預設值零。
取消訊息有助於防止本機傳送佇列在網路狀況不佳時過度增長。當您有幾類訊息會定期以最新資訊傳送,並且應取代任何先前排入佇列、可能仍在等待傳輸機會的過時訊息時,取消符合特定篩選運算式的訊息身分會很有效。當您有某個執行個體或某類機會性訊息,其遺失並不致命,且不值得佔用頻寬來嘗試傳輸 (而非傳輸更有價值的佇列訊息) 時,取消也很有用。
此本機身分值不屬於傳輸的資料承載。一旦訊息開始傳輸,且無法再由 PartyLocalEndpoint::CancelMessages() 從本機傳送佇列中移除,此值就不再適用。
timeoutInMilliseconds uint32_t
訊息允許留在 Party 管理的傳送佇列中等待傳輸機會的最長時間 (以毫秒為單位)。
如果因連線品質或接收者回應能力,導致訊息在此逾時到期時尚未開始傳輸,則訊息將被中止並從佇列中移除,而不會傳送。timeoutInMilliseconds 值為零表示不應有逾時,且訊息應保留在佇列中,直到成功傳輸、明確取消,或遇到某些傳輸失敗 (例如遠端中斷連線) 為止。未提供 PartySendMessageQueuingConfiguration 結構給 PartyLocalEndpoint::SendMessage() 時,預設值為零。訊息傳送佇列逾時有助於防止傳送佇列在網路狀況不佳時過度增長。它們很適合用於包含時效性、週期性資料的訊息;對於這類訊息,由於會定期傳送較新的完整取代訊息,且遺失任何個別訊息並不致命,因此傳輸過時的訊息只會浪費頻寬。
此逾時值只會影響 Party 管理的傳送佇列。它不會影響實際傳輸訊息所需的時間 (環境延遲),也不會改變等待接收者確認傳輸 (如果適用) 的時間長度。
傳送至沒有直接對等連線的目標時,此逾時值會評估兩次:一次是針對傳送用戶端前往透明雲端轉送的本機傳送佇列,會受本機環境狀況和至轉送的傳輸速率影響;第二次是在轉送本身上,轉送可能會根據不同的網路狀況、傳輸速率或遠端目標的回應能力,而被迫在轉送前將訊息排入佇列。
需求
標頭: Party.h另請參閱
Party 成員PartyLocalEndpoint::SendMessage
