Voor een overkoepelend project op diverse (fysieke) locaties in Indonesië en Nederland heb ik een webapplicatie gemaakt die het mogelijk maakt om gegevens in te voeren, terug te zoeken, aan te passen, etc. Het geheel is gebaseerd op AJAX aan de cliëntside en PHP aan de serverside.
Applicatie werkt perfect, mits er een stabiele verbinding is tussen client en server. Helaas is er in Indonesië echter geen garantie dat de internetverbinding stabiel is. Daarom ben ik nu aan het onderzoeken of er op één of andere manier een mogelijkheid is om de applicatie (beperkt) beschikbaar te houden als de verbinding tijdelijk wegvalt. Het gaat dan voornamelijk om het invoeren van nieuwe gegevens of het wijzigen van bestaande gegevens. Wanneer je op "opslaan" drukt en er is geen internetverbinding, dan zou de applicatie de gegevens vast moeten houden en op een later tijdstip - wanneer de internetverbinding terug is - opnieuw moeten proberen te versturen.
1. JavaScript wachtrij
Aangezien de formulieren via AJAX verstuurd worden, zou het mogelijk moeten zijn om - wanneer de verbinding is weggevallen, de request met gegevens in een wachtrij te plaatsen. De gebruiker zou dan duidelijk feedback moeten krijgen over het feit dat de gegevens op dit moment niet verstuurd konden worden, maar dat dat later nogmaals zal worden geprobeerd. Vanaf dat moment moet iedere X seconden opnieuw geprobeerd worden om de requests in de wachtrij te versturen. Wanneer de gebruiker zijn browser dichtklikt terwijl er nog requests in de wachtrij staan, moet hij heel duidelijk een popup krijgen met de vraag of hij zeker weet dat de browser afgesloten moet worden.
Voordelen: Het werkt op iedere browser zonder aanvullingen en is relatief eenvoudig te implementeren.
Nadelen: De oplossing is bijzonder afhankelijk van allerlei factoren en er zijn legio situaties te bedenken waarin de oplossing niet werkt (gebruiker drukt op verversen: wachtrij weg, gebruiker sluit toch zijn browser af: wachtrij weg, etc.)
2. Mozilla Prims
Ik lees ergens in een blog van Mozilla Labs dat er gewerkt wordt aan de mogelijkheid om met Prism gegevens op de computer zelf op te slaan. Iemand enig idee of dat al mogelijk is en hoe dat zou moeten werken? Ik ga hier zelf ook nog 'ns wat in spitten.
3. Firefox plugin
Met het maken van Firefox plugins heb ik geen enkele ervaring. Maar aangezien de omgeving waarin de applicatie gebruikt wordt perfect te sturen is, zou het mogelijk zijn om alle gebruikers te verplichten om Firefox te downloaden, inclusief een mogelijke plugin. De vraag is of het mogelijk is om een plugin te schrijven die ervoor zorgt dat gegevens tijdelijk offline gecached worden zolang er geen internetverbinding is.
Hierboven de mogelijkheden die ik zo zelf kan verzinnen. Ik hoop dat ik hiermee een discussie op gang kan brengen en dat er wellicht al brainstormend een oplossing gevonden kan worden. Met een beetje geluk is die oplossing ook voor andere tweakers bruikbaar/interessant.
Applicatie werkt perfect, mits er een stabiele verbinding is tussen client en server. Helaas is er in Indonesië echter geen garantie dat de internetverbinding stabiel is. Daarom ben ik nu aan het onderzoeken of er op één of andere manier een mogelijkheid is om de applicatie (beperkt) beschikbaar te houden als de verbinding tijdelijk wegvalt. Het gaat dan voornamelijk om het invoeren van nieuwe gegevens of het wijzigen van bestaande gegevens. Wanneer je op "opslaan" drukt en er is geen internetverbinding, dan zou de applicatie de gegevens vast moeten houden en op een later tijdstip - wanneer de internetverbinding terug is - opnieuw moeten proberen te versturen.
1. JavaScript wachtrij
Aangezien de formulieren via AJAX verstuurd worden, zou het mogelijk moeten zijn om - wanneer de verbinding is weggevallen, de request met gegevens in een wachtrij te plaatsen. De gebruiker zou dan duidelijk feedback moeten krijgen over het feit dat de gegevens op dit moment niet verstuurd konden worden, maar dat dat later nogmaals zal worden geprobeerd. Vanaf dat moment moet iedere X seconden opnieuw geprobeerd worden om de requests in de wachtrij te versturen. Wanneer de gebruiker zijn browser dichtklikt terwijl er nog requests in de wachtrij staan, moet hij heel duidelijk een popup krijgen met de vraag of hij zeker weet dat de browser afgesloten moet worden.
Voordelen: Het werkt op iedere browser zonder aanvullingen en is relatief eenvoudig te implementeren.
Nadelen: De oplossing is bijzonder afhankelijk van allerlei factoren en er zijn legio situaties te bedenken waarin de oplossing niet werkt (gebruiker drukt op verversen: wachtrij weg, gebruiker sluit toch zijn browser af: wachtrij weg, etc.)
2. Mozilla Prims
Ik lees ergens in een blog van Mozilla Labs dat er gewerkt wordt aan de mogelijkheid om met Prism gegevens op de computer zelf op te slaan. Iemand enig idee of dat al mogelijk is en hoe dat zou moeten werken? Ik ga hier zelf ook nog 'ns wat in spitten.
3. Firefox plugin
Met het maken van Firefox plugins heb ik geen enkele ervaring. Maar aangezien de omgeving waarin de applicatie gebruikt wordt perfect te sturen is, zou het mogelijk zijn om alle gebruikers te verplichten om Firefox te downloaden, inclusief een mogelijke plugin. De vraag is of het mogelijk is om een plugin te schrijven die ervoor zorgt dat gegevens tijdelijk offline gecached worden zolang er geen internetverbinding is.
Hierboven de mogelijkheden die ik zo zelf kan verzinnen. Ik hoop dat ik hiermee een discussie op gang kan brengen en dat er wellicht al brainstormend een oplossing gevonden kan worden. Met een beetje geluk is die oplossing ook voor andere tweakers bruikbaar/interessant.