Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

JQuery REST servicepagina met externe server update mogelijk

Pagina: 1
Acties:

  • W.Wonderland
  • Registratie: Maart 2006
  • Laatst online: 22-11 14:07
Aangezien alles op het gebied javascript programmeren icm webpagina's voor mij totaal nieuw is zal ik mijn vraag proberen te verduidelijken.

Ik heb een apparaat met ethernet aansluiting welke ik via een rest service vragen kan stellen, antwoord volgt in JSON.
vb: vraag: 192.168.0.200/json/gettemperature_a
antwoord {"temperature_a" : "273"}
Hiervoor heb ik een simpele html pagina gemaakt welke bv de volgende code uitvoert.
code:
1
2
3
4
5
6
7
8
9
10
  $('#TempA').click(function(){ 
          $.ajax({ 
             type: "GET",
             dataType: "json",
             url: "192.168.0.200/json/get/temperature_a",
             success: function(data){        
                alert(data);
             }
         });
    });

dit werkt allemaal goed en ik ben bezig om verschillende cursussen en voorbeelden te bekijken om hier iets moois van te maken.
Uiteindelijk moet er een realtime pagina komen met de temperaturen en wat andere parameters (alarm status).

Echter in plaats van continu de alarm status op te halen kan deze ook verzonden worden door het apparaat in een REST / JSON bericht. Het apparaat is dus een client maar ook een server.

Mijn vraag is nu is het mogelijk om deze (spontane) berichten in een html pagina met javascript te ontvangen? dus ergens een "taak" in luistermode te zetten en bij binnenkomst deze te verwerken en vervolgens tonen.

(edit: met Google geprobeerd om uit te zoeken of dit mogelijk was maar mogelijk door de verkeerde termen heb ik hier niets over kunnen vinden)

[ Voor 5% gewijzigd door W.Wonderland op 11-10-2013 13:06 ]


  • hiekikowan
  • Registratie: Februari 2011
  • Laatst online: 21-11 14:41
Hoe verzendt het apparaat zijn signaal? Een goede techniek hiervoor zou Websockets zijn, maar aangezien dit door het apparaat bepaalt wordt hebben we hierover meer informatie nodig...

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
Eerst even definitie:
REST zegt niks over hoe je data ophaalt of in welk formaat.
Het zegt wat over dat je stateless bent. Zie Wikipedia: Representational state transfer

Wat jij doet is een http GET waarop de response in JSON is.

Dan je vraag:
Ja, in html5, mits je server dat ondersteund.
Websockets is dan the way to go, maar omdat jij moet dealen met een bestaand apparaat (iets met temperatuur) gok ik dat hij geen websockets snapt.

Ik ben trouwens opzich al verbaast dat CORS geimplementeerd is door de fabrikant.


Trouwens kun je je natuurlijk voordat je veel moeite gaat doen even afvragen hoeveel processen er naar die server gaan praten, en hoe snel dat gaat.
Ik kan me voorstellen dat als er 100 gebruikers op gaan zitten f5én dat je er iets tussen wilt zetten die het een en ander aan caching doet.
Maar als jouw apparaat requests gewoon snel kan afhandelen met jou doelgroep gebruikers zou ik zeggen.
Blijf lekker pollen! Het werkt en je kunt het (blijkbaar) hebben.

owja:
en je kunt [code] tags gebruiken om je code tussen te zetten, dan wordt het wat leesbaarder

en owja2:
ik hoop dat je http:// voor je url heb staan in het echt?

[ Voor 31% gewijzigd door BasieP op 10-10-2013 18:50 ]

This message was sent on 100% recyclable electrons.


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Inderdaad, als er veel gebruikers zijn die meermaals per seconde de temperatuur op gaan vragen. Dan zou ik iets met websockets gaan doen, maar gewoon eenmaal per 2 seconden pollen, is geen probleem.

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 15:38
Je hebt als voorbeeld temperatuur. In de meeste systemen stijgt de temperatuur ook niet dusdanig snel dat je meerdere keren per seconde de waarde wilt uitlezen? Dus bepaal eerst wat je eigenlijk nodig hebt.

Overigens is real-time niet hetzelfde als "snel", dus zonder exacte specificatie kunnen we je nog niet adviseren...

  • W.Wonderland
  • Registratie: Maart 2006
  • Laatst online: 22-11 14:07
Bedankt voor de reacties.

Even een korte toelichting over het device:
Deze staat mij thuis gekoppeld in het netwerk.
De locaal verzamelde gegevens (Temperatuur (on board), Solar power (via IP), Solar power (via RS232) en anderen) worden periodiek verstuurd naar verschillende servers (bv COSM/Xively met hun REST API, thingspeak, PVoutput, Gerneral etc)
Locaal kan ik via een html pagina (op locale PC) het voorbeeld zoals in mijn eerste post uitvoeren.

Ik kan zo alle beschikbare waardes opvragen (en wijzigen).
Events / statusen welke bijna nooit voorkomen/wijzigen wil ik eigenlijk niet continu pollen maar deze automatisch door laten geven via REST (een http POST waarbij de data inhoud in JSON is.) (zoals ook gebruikt voor COSM / thingspeak etc)
De webpagina moet dus eigenlijk een server zijn welke deze POST events onderschept.

Door jullie reacties ben ik bij termen: Websockets en Server-Sent Events terechtgekomen en dit lijkt een juiste oplossing voor hetgeen ik wil.

Bedoeling is ook maar één gebruiker (beheerder) welke hier (locaal) toegang tot heeft. Alle andere gebruikers kunnen de (verwerkte) data bekijken op de servers waar het heen gestuurd is.

Pollen is inderdaad heel goed mogelijk, werkt perfect (en simpel) maar ik blijf het "ouderwets" vinden, onnodig steeds vragen of er iets is tewijl er zelf aangegeven kan worden dat er iets is.

BasieP:
- CORS term kende ik niet maar device & locale PC zitten in hetzelfde domein, dat een device naar buiten kan communiceren (COSM, thingspeak) is niet heel bijzonder denk ik.
- [ code ] tags toegevoegd (even over het hoofd gezien)
- Uiteraard http:// ervoor
Pagina: 1