ASIHttpRequest solicitação duplicada no heroku

1

Eu tenho um aplicativo para iphone usando o ASIHttpRequest. O código do servidor está no heroku em node.js

Ocasionalmente, uma única solicitação é enviada do aplicativo iphone (apenas um rastreio), mas é recebida duas vezes no herokuapp (posso ver duas vezes a mesma solicitação nos logs do heroku).

Eu pensei que no início a solicitação foi solicitada duas vezes por causa de um erro na primeira tentativa, mas não é o caso, pois ambos os pedidos (o que eu preciso e o segundo que eu não preciso) são executados no lado do servidor.

Alguma ideia?

    
por Luc 05.11.2011 / 08:35

1 resposta

2

Isso também me mordeu. Eu estava usando uma solicitação GET para validar um código de voucher multiuso em um servidor. Quando adicionamos uma limitação de taxa para resgatar códigos, alguns clientes informaram que atingiram o limite antes que precisassem. Acontece que algumas das validações desencadearam dois reds.

Suponho que sua solicitação esteja usando o método GET.

O comportamento padrão quando se usa GET é permitir conexões persistentes ( o cabeçalho HTTP Keep-Alive ).

Ao usar uma conexão persistente, sua solicitação GET poderá ser retransmitida se algo na rede parecer inseguro (esse é um termo técnico), em vez de a solicitação falhar. Isso geralmente é desejável porque as solicitações GET geralmente não têm efeitos colaterais no servidor.

As solicitações POST ou PUT, por outro lado, usam como padrão não usar uma conexão persistente e não retransmitirão sua operação, o que pode ser uma compra com cartão de crédito ou algo mais com efeitos colaterais significativos.

Se você deseja evitar que seu ASIHTTPRequest GET envie, por vezes, duas ou mais solicitações de servidor (devido a problemas de rede fora de seu controle), basta definir esse sinalizador:

request.shouldAttemptPersistentConnection = NO;

Isso deve cuidar dos duplicados espúrios do GET no servidor.

    
por 11.02.2012 / 10:01

Tags