> Ik probeer op een node te subscriben met de Smack library. In het
> debug venster kan ik het verkeer onderling monitoren en daar zie ik
> het volgende.
>
> client -> server
> <iq id="ahbBk-6" to="nsapi.xmpp.openov.nl" type="set">
> <pubsub xmlns="http://jabber.org/protocol/pubsub">
> <subscribe node="stations/ut/avt" jid="nsapi.xmpp.openov.nl"/>
> </pubsub>
> </iq>
>
> waarop ik de volgende reactie krijg:
>
> <iq id="6GLa0-7" to="treinp...@jabber.org/05481a435b9c1d50"
> from="nsapi.xmpp.openov.nl" type="error">
> <error code="-1" type="CANCEL">
> <not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
> </error>
> </iq>
Terecht ;) Dat is de jid van de server, en niet van jezelf.
<http://xmpp.org/extensions/xep-0060.html#subscriber-subscribe-request>
Stefan
> Jep dat verhelpt de unauthorized.
>
> <iq id="tAx87-6" to="nsapi.xmpp.openov.nl" type="set">
> <pubsub xmlns="http://jabber.org/protocol/pubsub">
> <subscribe node="stations/ut/avt" jid="treinp...@jabber.org"/>
> </pubsub>
> </iq>
>
> Nu krijg ik alleen nog geen items binnen, waarschijnlijk iets te maken
> met dat in het reply van de server de jid null is?
>
> <iq id="tAx87-6" to="treinp...@jabber.org/44d7b3ccfc748a4f"
> from="nsapi.xmpp.openov.nl" type="result">
> <pubsub xmlns="http://jabber.org/protocol/pubsub">
> <subscribe xmlns="http://jabber.org/protocol/pubsub"/>
> <subscription jid="null" subscription="subscribed"/>
> </pubsub>
> </iq>
Dan heb je een mooie bug te pakken. Die null hoort daar niet. Even kijken
hoe die daar kan komen.
Ik heb overigens wel subscriptions van je staan, op Utrecht; zowel op .org
als op .se.
Stefan
> Nu krijg ik alleen nog geen items binnen, waarschijnlijk iets te maken
> met dat in het reply van de server de jid null is?
Is gefixed.
Hergebruik van een variabele gaf erg onverwachte resultaten.
Stefan
> Nog steeds geen items echter, ben nog aan het uitzoeken waar dat aan
> zou kunnen liggen.
Om materiaal te krijgen moet je aan de volgende voorwaarden voldoen:
- Je client moet online zijn, we gaan daar vanuit je als je de
subscription maakt. Kan een bericht niet afgeleverd worden wordt de client
offline gezet.
- Omdat we ook willen weten of je weer online komt stuurt de server ook
een subscription op je presense uit. Op het moment dat je dan weer online
komt wordt je online status ook gezet.
- Om data te ontvangen wordt er om de minuut gepold op de tabel met data.
Vervolgens worden wijzigingen herkend, en dat doorgestuurd aan alle
clients die online zijn, en zijn gesubscribed op die data.
- Om er voor te zorgen dat *jouw* stukje dat is gesubscribed wordt gepold
moet je online zijn, anders word dat station bij de update niet
meegenomen.
Dit zijn jouw laatste vier; de .se/smack is dus voor het laatst gezien om
17:55. De rest zou nog online zijn.
treinp...@jabber.se/smack|0|2012-01-02 17:55:35
treinp...@jabber.org/smack|1|
treinp...@jabber.org/01d0aa8b9b19f18d|1|
treinp...@jabber.org/474c1e33452a842f|1|
Nu vermoed ik dat jij weer direct een corner case te pakken hebt. Want ik
zie subscriptions van je;
treinp...@jabber.org|ut||
treinp...@jabber.org|asd||
treinp...@jabber.org|asd||
treinp...@jabber.org|asd||
treinp...@jabber.org|asd||
Maar je ziet zelf ook dat die subscriptions op de barejid zijn en niet op
de fulljid met resource. Practisch gezien zou dat volgens mijn goede
vrienden bij de standaard commissie betekenen dat het bericht wordt
gestuurd naar de client die het laatste een presense heeft uitgestuurd en
niet naar alle jids die online zijn.
Je moet voor jezelf even je usecase bepalen;
- wil je 10 clients aansluiten, gebruik dan voor die 10 clients
verschillende resources *ook* subscriptions met die resources.
- wil je alleen berichten binnen krijgen op het apparaat waar je op dat
moment voor zit, of in je hand hebt, zou het voldoen om een bare jid te
gebruiken. De eerst volgende event wordt dan verstuurd naar de resource
met meeste prioriteit.
Laat even weten of je er uit komt.
Stefan
> - Om er voor te zorgen dat *jouw* stukje dat is gesubscribed wordt gepold
> moet je online zijn, anders word dat station bij de update niet meegenomen.
Mocht er toch nog een bug aan onze kant op zitten. Zit dat hoogst
waarschijnlijk in de join op de online zijnde full-jids en de bare-jid die
jij gebruikt. Ga ik laten vanavond even naar kijken.
Stefan
Als je ideeen heb semantisch gezien, die wel van het NS model afwijken,
maar mogelijk wel in een groter 'OV' plaatje passen horen we dat
natuurlijk graag.
Waar we nu mee bezig zijn is voornamelijk 'standaarden die door anderen
zijn gemaakt', eenvoudig realtime beschikbaar maken. Zonder de noodzaak
van VPN's en webservices. Helaas wordt de XML daar niet uniform door, en
dat is wel het ultieme doel: met zelfde techniek trein, bus, metro, tram
doen.
...uiteraard niet tot de landgrenzen gelimiteerd ;)
Stefan
Op 03-01-12 00:54, Koch schreef:
> Heb het nu ook werkend in android, nu een treinbord (tb7) op basis
> van XMPP, net echt ;)
Als je een plaatje en linkje hebt komt hij uiteraard op de promotie
pagina ;) Ben erg benieuwd.
> Data die je zou kunnen toevoegen is welke vervoerder de trein
> uitvoert. In mijn app, treinbord, doe ik dit aan de hand van het
> treinnummer en de treinnummerlijst van Prorail. Je moet alleen wat
> trucs uitvoeren om voor,volg, omgeleide en onderbroken treinen ook
> mee te pakken. Komt ongeveer neer op dit.
>
> private int plannedTrainNr(int trainnr){ if (trainnr >= 100000 &&
> trainnr < 200000){ return trainnr - 10000; }else if (trainnr >=
> 200000 && trainnr < 300000){ return trainnr - 20000; }else if
> (trainnr >= 690000 && trainnr < 700000){ return trainnr - 690000;
> }else if (trainnr >= 700000 && trainnr < 800000){ return trainnr -
> 700000; } return trainnr; }
>
> Meer info over treinnr systeem staan in de voetnoot in het Prorail
> xls bestand en hier
> http://wiki.ovinnederland.nl/wiki/Treinnummering#Nummering. Maar
> eigenlijk is het echt iets wat de NS zou moeten leveren, ook in de
> reisplanner (zeker nu met het ovchipkaart verhaal).
Heb je dan ook stiekem een linkje naar het Prorail XLS bestand ;)
Ik ben uiteraard niet de beroerdste om even een if then else te
tikken. Wij waren overigens al bezig om aan te geven of een trein WiFi
heeft of niet, dat lijkt me zo gaaf.
Stefan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEUEAREKAAYFAk8CRysACgkQYH1+F2Rqwn0SAQCXV6AdSu3IDGUV9f2+CIRRMZ3m
IACaAsatNlP2LUx8mBXXJe6pe6J38+k=
=/XbO
-----END PGP SIGNATURE-----
> Ik heb de veranderingen die ik heb gemaakt in (a)smack even op github
> gegooid
Nu eigenlijk nog even iets van anonymous authentication enzo.
Stefan
> Zou het mogelijk zijn om http://xmpp.org/extensions/xep-0060.html#entity-subscriptions
> te ondersteunen? Op dit moment krijgt ik <Handler not supported>
> terug. Kan handig zijn aangezien ik nu subscribed ben op de nodes mt,
> asd, asdz en shl en ik eigenlijk maar op een node tegelijk wil.
Ja dat staat op de TODO. Onder de motorkap zit het er volgens mij al wel
in maar zag gisteren al een suPscription typo bij het event staan.
Gelukkig hebben we voor de kerst een beter framework voor PubSub
implementaties gemaakt, dat niet alles handmatig meer gedaan hoeft te
worden.
Stefan