ASIHTTPRequest

ASIHTTPRequest discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Hallo, Ik heb een vraagje omtrent de werking van ASIHTTPRequest. Ik heb op dit moment een project lopen waarbij gegevens moeten worden gepushed naar een ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen
  #1  
Oud 19 September 2011, 00:42
» iPhone 3GS 16GB (Zwart) [FW: 3.1.2]  [Jailbreak: Ja]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 6 April 2010
Berichten: 6
Standaard ASIHTTPRequest

Hallo,
Ik heb een vraagje omtrent de werking van ASIHTTPRequest. Ik heb op dit moment een project lopen waarbij gegevens moeten worden gepushed naar een Iphone. Nu is dit blijkbaar nogal een erg lastige klus en ben daarom op een alternatieve manier te werk gegaan. Een iPhone stuurt een request naar een php pagina die php pagina gaat zoeken of er iets is gewijzigd zo ja dan geeft hij dit terug. Die php pagina blijft 1 minuut lang zoeken en anders geeft hij terug niets gevonden. Dan start de request op nieuw. Op deze manier heb ik een soort van Push en hoef maar eens per minuut de php pagina te pullen.

Nu komt de vraag, tijdens zo'n request bijft de activity indicator in de balk lopen. Hoe werkt dit systeem? Vraagt hij een website op en wacht tot er response komt of blijft hij constant maar vragen? aangezien de activity indicator maar blijft draaien (gedurende die hele minuut).

Dit zou namelijk een flinke aanslag op je internet verbinding zijn haha.

Alvast erg bedankt!
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 19 September 2011, 01:29
» iPhone 4 32GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 32GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 4 October 2010
Locatie: Breda
Berichten: 68
Standaard

ASIHTTPRequest houdt per default de verbinding met de server een tijdje open (een paar minuten), zodat hij bij een volgende aanvraag niet opnieuw een verbinding hoeft op te zetten. Dit heet een persistent connection. (Het kan zijn dat dit in de laatste versie standaard uit is gezet, maar je kunt het sowieso altijd weer enablen.)

In principe kost het (bijna) geen bandbreedte om een verbinding een minuut lang open te houden zonder dat er gegevens heen en weer worden gestuurd. Alleen als er daadwerkelijk pakketjes met data op en neer gaan, wordt er bandbreedte gebruikt.

Dat wil niet zeggen dat jouw oplossing ook echt goed is. Je misbruikt het HTTP protocol voor iets waar het eigenlijk niet voor gemaakt is. Het is slimmer om zelf een eigen protocol te maken (klinkt enger dan het is) met sockets. De iPhone houdt dan een verbinding open naar de server (wat dus nauwelijks bandbreedte kost). Steeds als de server iets te melden heeft, dan stuurt hij de gegevens naar de iPhone.

Je kunt dit niet in PHP doen (het kan wel maar ik zou het niet doen), maar bijvoorbeeld in Java of Python. Je kunt hier een tutorial vinden over dit onderwerp:
How To Create A Socket Based iPhone App and Server | Ray Wenderlich
  #3  
Oud 19 September 2011, 12:46
» iPhone 3GS 16GB (Zwart) [FW: 3.1.2]  [Jailbreak: Ja]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 6 April 2010
Berichten: 6
Standaard

Oke ontzettend bedankt voor uw hulp ik denk echter dat het gedeelte met sockets op dit moment nog wat te hoog gegrepen is aangezien ik nog nooit iets eerder met een socket verbinding heb gedaan (ken alleen de term). Ik weet dat ik in dit geval de http misbruik maar het werkt wel en dat is voor mijn demonstratie applicatie voorlopig voldoende.
  #4  
Oud 19 September 2011, 13:27
» iPhone 5s 16GB (Goud) [FW: 7.1.2]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 12 January 2009
Berichten: 484
Standaard

Ik vind het niet eens zo'n hele slechte oplossing. Echter zou ik het php script niet een minuut laten wachten.

Je iPhone roept gewoon elke minuut het script aan. in de response staat de tijd wanneer er het laatst iets is gewijzigd. Als deze datum nieuwer is dan de laatste data die jij hebt, dan lees je de rest van de data in.

Dit is niet echt push, maar eerder Polling. Als je echt realtime iets wilt pushen dan moet je inderdaad met sockets gaan werken.
__________________
Software Engineer
iPhone Developer
  #5  
Oud 19 September 2011, 13:30
» iPhone 3GS 16GB (Zwart) [FW: 3.1.2]  [Jailbreak: Ja]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 6 April 2010
Berichten: 6
Standaard

Ja dan ben je dus om de minuut aan het pollen. De manier waarop ik nu werk is dat de PHP om de minuut terug geeft "Ik heb niks". Gebeurd er echter tussentijds iets dan geeft hij het direct terug in dat geval heb ik dus een response van 1 seconden vanaf het moment dat php een verandering detecteerd. en zit er niet steeds n volle minuut tussen
  #6  
Oud 19 September 2011, 15:04
» iPhone 5s 16GB (Goud) [FW: 7.1.2]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 12 January 2009
Berichten: 484
Standaard

Ja dat klopt. Ik weet natuurlijk niet hoe belangrijk het is dat je de data zo snel mogelijk hebt
  #7  
Oud 19 September 2011, 15:05
» iPhone 3GS 16GB (Zwart) [FW: 3.1.2]  [Jailbreak: Ja]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 6 April 2010
Berichten: 6
Standaard

Dat is best belangrijk. Maar dit is alleen tijdens het gebruik van de app het hoeft niet te werken in de background. Dus ik verwacht dat deze oplossing die overigens werkt geen probleem is
  #8  
Oud 19 September 2011, 19:17
» iPhone 4 32GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 32GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 4 October 2010
Locatie: Breda
Berichten: 68
Standaard

Citaat:
Oorspronkelijk geplaatst door hallo409 Bekijk bericht
Dus ik verwacht dat deze oplossing die overigens werkt geen probleem is
Op de iPhone werkt het waarschijnlijk prima. Maar wat denk je dat er aan de kant van de server gebeurt? Die moet voor elke iPhone die de app gebruikt een actieve HTTP connectie onderhouden. Als de app populair wordt, kun je maar beter een grote server aanschaffen. ;-)
Reageren


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 00:39.