Diferenças entre websockets e longa votação para servidor de jogo baseado em turnos

89

Estou escrevendo um servidor para um jogo iOS. O jogo é baseado em turnos e a única vez que o servidor precisa enviar informações para o cliente é para notificar o movimento do oponente.

Estou curioso para saber se alguém poderia comentar sobre as diferenças de desempenho e facilidade de implementação entre o uso de websockets e pesquisas longas. Além disso, se eu usar websockets, devo usá-lo apenas para receber informações e enviar solicitações POST para todo o resto ou toda a comunicação deve ser feita por meio do websocket?

Além disso, há algo a mais a se considerar entre websockets e long polling se eu estiver interessado em também fazer um cliente web?

ácido
fonte
6
Você também pode usar notificações push para notificar o cliente sobre novos dados. Eu acredito ser mais eficiente (bateria), do que suas duas soluções consideradas.
pteofil
1
como isso funcionaria se o usuário ainda estivesse no aplicativo?
ácido de
4
Você também é notificado no aplicativo quando recebe uma notificação push.
pteofil

Respostas:

177

O que é pesquisa longa?

insira a descrição da imagem aqui Uma variação da técnica tradicional de pesquisa e permite a emulação de um envio de informações de um servidor para um cliente. Com a pesquisa longa, o cliente solicita informações do servidor de maneira semelhante a uma pesquisa normal.

  • Se o servidor não tiver nenhuma informação disponível para o cliente, ao invés de enviar uma resposta vazia, o servidor retém a solicitação e aguarda que alguma informação esteja disponível.
  • Assim que as informações estiverem disponíveis (ou após um tempo limite adequado), uma resposta completa é enviada ao cliente. O cliente normalmente solicitará imediatamente novamente as informações do servidor, de modo que o servidor quase sempre terá uma solicitação em espera disponível que pode ser usada para entregar dados em resposta a um evento.

    Em um contexto web / AJAX, long polling também é conhecido como programação Comet.

E sobre Websockets?

insira a descrição da imagem aqui Os WebSockets fornecem uma conexão persistente entre um cliente e um servidor que ambas as partes podem usar para começar a enviar dados a qualquer momento.

  • O cliente estabelece uma conexão WebSocket por meio de um processo conhecido como handshake WebSocket. Esse processo começa com o cliente enviando uma solicitação HTTP normal ao servidor.
  • Um cabeçalho de atualização está incluído nesta solicitação que informa ao servidor que o cliente deseja estabelecer uma conexão WebSocket.

Conclusão :

Se houver necessidade de comunicação em tempo real pode muito bem optar por websockets.

Mas em Long Polling:

Uma conexão é mantida aberta entre o cliente da web e o servidor da web para que, quando o servidor tiver novas informações, ele possa enviá-las ao cliente. Esse pedido é então concluído. Uma nova solicitação é feita entre o cliente e o servidor e, em seguida, aguarda outra atualização do servidor. A mesma conexão TCP é geralmente aberta persistentemente em várias solicitações devido a keep-alives HTTP / 1.1.

Referências e outras considerações:

PubNub long polling vs sockets - duração da bateria móvel

O que são Long-Polling, Websockets, Server-Sent Events (SSE) e Comet?

longa sondagem no objetivo-C

Introdução ao Websocket

Websocket Vs Long Polling

Usando Websockets em aplicativos

Aplicativo Websocket

PushTechnology-Long Polling

Tharif
fonte