Douwe Egberts koffiemanager protocol | |
Douwe Egberts Koffiemanager is een klein programmaatje voor op het werk dat er voor zorgt dat collega's koffie voor elkaar halen. Het draait op de achtergrond van een PC, verzamelt individuele wensen en wijst aan wie van de collega's aan de beurt is om een rondje te halen. De verschillende installaties communiceren dus met elkaar dus dat maakt het interessant. Ik heb eens even gekeken en het blijkt dat ze gewoon SOAP calls naarelkaar doen. Onderstaande informatie is een beginnetje om je eigen versie te maken met je eigen functionaliteit. | |
1. DE koffiemanager protocol
In het koffiemanager protocol wordt onderscheid gemaakt tussen de manager van de koffiegroep en de clients. De manager heeft bepaalde privileges binnen de applicatie maar daarnaast is het zijn client die regelmatig op het netwerk kijkt of er clients actief zijn (geworden), geeft ze de gelegenheid zich aan te melden en houdt de verbinding in stand.
2. Server Broadcast
De koffieclient die groepsmanager is, doet ca. 2 keer per minuut met onregelmatige intervallen een broadcast naar het netwerk (255.255.255.255) via UDP port 13473.
De inhoud van deze boodschap is:
De client van de groepsmanager gedraagt zich verder als server.
3. Aanmelden Client
Bij het opstarten van een client laat deze het netwerk weten dat hij er is door via UPD port 13473 naar het netwerk de volgende boodschap te sturen:
Dit geeft de server de gelegenheid nu de client te registreren en stuurt ter bevestiging een lege html header middels een POST naar port 13472 naar de client via tcp:
De client stuurt een acknowledgement terug (alleen ACK bit on in TCP header). Dit is gewoon een leeg packet.
4. Deelnemers
Na deze acknowledge stuurt de server een lijstje met deelnemers van deze groep:
De client bevestigd ontvangst van dit bericht door een http close connectie header te sturen:
En daarna stuurt de client het ontvangen bericht weer terug (als text/plain):
5. Settings
De server stuurt met een http POST vervolgens alle instellingen voor de clientapplicatie naar de client:
En met een http close header stuurt de client het hele xml-bericht weer terug. Merk op dat de inhoud van SharedData op zich ook weer een xml message is. Enige escaping van karakters is dan nodig. Deze is hier vertaald vanwege de leesbaarheid.
6. Registratie geaccepteerd
Wanneer er geen fout teruggekomen is maar het gehele bericht stuurt de server middels een http Post een accepted message:
De client reageert hierop door weer het gehele bericht terug te sturen.
Als laatste stap van het aanmelden worden de .Data en .Members messages weer opnieuw gestuurd en beantwoord.
7. Keep Alive
De server bewaakt de status van de clients. Dit mechanisme werkt als volgt:
De server stuurt (http post) de volgende boodschap naar de clients die aangemeld zijn (http post):
De clients reageren door dezelfde boodschap weer terug te sturen als result van de post.
De echte alive melding van de client is een post naar de server van:
De server geeft als ack dezelfde boodschap weer terug.
Dit verkeer wordt ook vanuit de client geiniteerd, namelijk een KeepAlive verzoek gevolgd door een KeepAliveReply van de server.
8. Scan
De client heeft de mogelijkheid te ontdekken welke koffiegroepen er op het netwerk aanwezig zijn. Dit doet hij door over UPD port 13472 de volgende boodschap naar 255.255.255.255 te broadcasten:
In het netwerk aanwezige servers reageren hierop door de scannende machine op port 13473 via http post een boodschap te sturen met de koffiegroep die zij staan te servicen:
9. Naamswijziging
Wijzigingen in de instellingen van de client die van belang zijn voor de gehele groep (drank., naam) worden naar de server gecommuniceerd met een daartoe bestemde tag. Door het data block volgens de .Data message te sturen naar alle aangemelde clients wordt deze wijziging gerepliceerd. Zie hierboven bij settings voor uitleg over .Data..
Voorbeeld van een naamswijziging:
De client stuurt (http post) de volgende boodschap:
10. Software
De DE koffeemanager bestaat uit een enkele executable die zich zowel als server als client kan gedragen. Voor ondersteuning van de gebruikte netwerk protocollen wordt gebruik gemaakt van componenten van de Indy library versie 9.0.10. De informatie die uitgewisseld wordt via het hierboven beschreven protocol wordt in de registry opgeslagen. In HKEY_USERS\xx\Software\Douwe Egberts Koffiemanager\2.0 staat alle relevante informatie. De id's die in de applicatie gebruikt worden en via xml worden uitgewisseld staan in HKEY_USERS\xx\Software\Douwe Egberts Koffiemanager\2.0\Settings\Users\User_xxx\.
|
|
Disclaimer | |
Het publiceren van deze informatie is een initiatief van mij en is zeer zeker niet van Douwe Egberts Nederland B.V. De site van Douwe Egberts Nederland B.V. is te vinden op: http://www.de.nl/. Douwe Egberts Nederland B.V. is exclusief rechthebbende op het merk DE enzo. Douwe Egberts Nederland B.V. heeft voor dit merk meerdere registraties verricht, waaronder voor het Douwe Egberts logo dat op deze pagina te zien is. |