Pular para o conteúdo principal
Parâmetros de configuração opcionais para modificar o comportamento de enfileiramento local ao enviar uma mensagem.

Sintaxe

Membros

priority   int8_t A prioridade da mensagem enfileirada localmente em relação aos dados de chat ou às mensagens enviadas de outros pontos de extremidade locais. priority deve ser um valor entre c_minSendMessageQueuingPriority e c_maxSendMessageQueuingPriority, inclusive. Números maiores representam prioridade relativa mais alta (serão transmitidos primeiro) em relação a números menores. O padrão quando nenhuma estrutura PartySendMessageQueuingConfiguration é fornecida a PartyLocalEndpoint::SendMessage() é c_defaultSendMessageQueuingPriority, que fica exatamente no meio do intervalo de inteiros com sinal (zero).

A prioridade da fila de envio não modifica a ordem em que as mensagens enviadas de um determinado ponto de extremidade local são transmitidas ou entregues. Ela afeta apenas a ordenação das mensagens de pontos de extremidade locais diferentes, ou entre um ponto de extremidade e os dados de chat transmitidos internamente, que usam a prioridade c_chatSendMessageQueuingPriority. A fila de envio do ponto de extremidade local que tiver as mensagens com o maior valor de prioridade terá suas mensagens qualificadas para transmissão primeiro. Se todas as mensagens restantes enfileiradas pelos pontos de extremidade locais tiverem a mesma prioridade, as mensagens individuais estarão qualificadas para transmissão na mesma ordem em que ocorreram as chamadas a PartyLocalEndpoint::SendMessage().

Uma maneira de entender esse comportamento é que mensagens de alta prioridade elevam automaticamente a prioridade de todas as mensagens anteriores do mesmo ponto de extremidade local para o mesmo valor, a fim de garantir a entrega oportuna da mensagem de alta prioridade sem quebrar as expectativas de entrega sequencial das mensagens transmitidas anteriormente pelo ponto de extremidade local. Outros pontos de extremidade locais têm sua própria sequência de envio e, portanto, não têm essas garantias de ordenação (embora a biblioteca do Party faça o possível para preservar, quando possível, a ordem em que foram enviadas originalmente).

A prioridade da fila de envio de uma mensagem importa quando há mais bytes a serem enviados do que a conexão comporta devido à qualidade da conexão ou à capacidade de resposta do destinatário. Enviar mensagens mais importantes com prioridade mais alta garante que elas tenham a primeira oportunidade de usar os recursos de rede limitados. Se você continuar enviando mensagens mais rápido do que é possível transmiti-las com êxito, as mensagens de prioridade mais baixa poderão ficar “famintas” e a fila de envio do ponto de extremidade local associado continuará crescendo. Gerencie esse crescimento potencial cancelando mensagens desnecessárias com PartyLocalEndpoint::CancelMessages(), usando o campo timeoutInMilliseconds para atingir automaticamente o tempo limite de mensagens que ficaram enfileiradas por tempo demais ou simplesmente reduzindo o tamanho e/ou a frequência das chamadas a PartyLocalEndpoint::SendMessage().
identityForCancelFilters   uint32_t Um valor definido pelo chamador a ser usado ao avaliar a aplicabilidade da mensagem com expressões de filtro de cancelamento. Esse valor de identidade da mensagem pode ter qualquer significado específico do chamador e não é interpretado pela biblioteca do Party, exceto para uso por PartyLocalEndpoint::CancelMessages() ao avaliar se a mensagem corresponde à expressão de filtro de cancelamento fornecida opcionalmente.

Um valor padrão de zero é usado quando nenhuma estrutura PartySendMessageQueuingConfiguration é fornecida a PartyLocalEndpoint::SendMessage().

O cancelamento de mensagens pode ajudar a impedir que a fila de envio local cresça excessivamente em condições de rede ruins. O cancelamento de identidades de mensagens que correspondem a determinadas expressões de filtro funciona bem quando você tem categorias de mensagens que são enviadas regularmente com as informações mais recentes e que devem substituir qualquer mensagem desatualizada enfileirada anteriormente que ainda possa estar aguardando uma oportunidade de transmissão. O cancelamento também pode ser útil quando você tem uma instância ou categoria de mensagens oportunistas cuja perda não seria fatal e que não valem a largura de banda para tentar transmiti-las em vez de mensagens enfileiradas mais valiosas.

Esse valor de identidade local não faz parte da carga de dados transmitida. Ele não tem aplicabilidade depois que a mensagem começa a ser transmitida e não pode mais ser removida da fila de envio local por PartyLocalEndpoint::CancelMessages().
timeoutInMilliseconds   uint32_t O tempo máximo, em milissegundos, que a mensagem pode permanecer em uma fila de envio gerenciada pelo Party aguardando uma oportunidade de transmissão. Se a mensagem não tiver começado a ser transmitida quando esse tempo limite se esgotar, devido à qualidade da conexão ou à capacidade de resposta do destinatário, a mensagem será anulada e removida da fila sem ser enviada.

Um valor de timeoutInMilliseconds igual a zero indica que não deve haver tempo limite e que a mensagem deve permanecer enfileirada até ser transmitida com êxito, ser cancelada explicitamente ou encontrar alguma falha de transmissão, como a desconexão remota. Zero é o padrão quando nenhuma estrutura PartySendMessageQueuingConfiguration é fornecida a PartyLocalEndpoint::SendMessage().

Os tempos limite da fila de envio de mensagens podem ajudar a impedir que as filas de envio cresçam excessivamente em condições de rede ruins. Eles funcionam bem com mensagens que contêm dados periódicos e sensíveis ao tempo, nas quais seria um desperdício de largura de banda transmitir mensagens obsoletas, porque uma mensagem de substituição completa e mais recente é enviada regularmente e a perda de qualquer mensagem individual não é fatal.

Esse valor de tempo limite afeta apenas o enfileiramento de envio gerenciado pelo Party. Ele não afeta o tempo necessário para realmente transmitir uma mensagem (latência do ambiente) nem altera quanto tempo aguardar que o destinatário confirme a transmissão, se aplicável.

Esse valor de tempo limite é avaliado duas vezes ao enviar para destinos sem conexões diretas ponto a ponto: uma vez para as filas de envio locais do cliente remetente até a retransmissão em nuvem transparente, afetada pelas condições do ambiente local e pelas taxas de transmissão para a retransmissão, e uma segunda vez na própria retransmissão, que pode ser forçada a enfileirar mensagens antes de encaminhá-las com base em condições de rede, taxas de transmissão ou capacidade de resposta diferentes dos destinos remotos.

Requisitos

Cabeçalho: Party.h

Confira também

Membros do Party
PartyLocalEndpoint::SendMessage
Última modificação em 20 de outubro de 2026