Är det möjligt att låta en REST API server skicka data till klienten kontinuerligt

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008

Är det möjligt att låta en REST API server skicka data till klienten kontinuerligt

Vi säger att jag vill läsa utav USB porten från en REST API server till klienten om klienten säger

"Okej server! Skicka data till mig. Jag lyssnar!" - Klient till server.

Hur gör man detta i Spring ramverk? Vad kallas det?

| CPU: MMX 200 MHz Intel Pentium I| GPU: Voodo2 3dfx 8 Mb| RAM: SDRAM 32 Mb 133 Mhz | PSU: 3V fläkt 2W | Chassi: HP Vectra VE 5| Skärm: HP Ergo 1024| HDD: Toshiba 2033 MB | OS: Windows 95 B | Mus: HP |

Trädvy Permalänk
Medlem
Registrerad
Feb 2017
Trädvy Permalänk
Medlem
Registrerad
Jul 2005

Nu vet jag inte hur API:et ser ut eller om du har möjligheter att modifiera det.
Sedan beror det på vilken typ av data du vill kontinuerligt hämta.

Men skulle ta en koll på webhooks och sätta upp webhooks i api:et för "DataAvailable" och låta klienten prenumerera på detta event.

Lätt förklar fungerar det så att klienten sätter upp sin egen rest-server för callbacks på t.ex. https://minklientdator/api/DataAvailableEvent och servern sätter upp en register-funktion för callbacks t.ex. https://serverdator/api/RegisterForDataAvailable

Därefter anropar klienten servern och registrerar sig för callbacks med sin callback-url.

There are 10 types of people in the world: Those who understand binary, and those who don't...

Asus Maximus VIII Hero | i7-6700K | ASUS GeForce GTX1070 Strix 8GB | G.Skill F4-2133C15Q-32GRK |

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Aug 2001

Long-polling, antar jag, eller websocket. Hade du kört .Net hade jag sagt "använd signalr".

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."
#fooblog @ freenode.org, #lysator @ freenode.org

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Dec 2014

Spring har rätt många guider kring just sockets så där är väl var jag skulle börja kolla. Vill du även hålla på med något lite effektivare än vanliga sockets kan jag rekommendera att du kollar på gRPC. Bara att söka på 'gRPC streaming spring' så kommer du få upp massvis med guider och förslag

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008

Så det är websockets jag ska använda mig utav?
Vi säger att jag vill ha data i visst mellanrum då? Typ varje 1 sekund vill jag ha data.

Då kanske jag kanske bara ska anropa med POST och GET som vanligt?

| CPU: MMX 200 MHz Intel Pentium I| GPU: Voodo2 3dfx 8 Mb| RAM: SDRAM 32 Mb 133 Mhz | PSU: 3V fläkt 2W | Chassi: HP Vectra VE 5| Skärm: HP Ergo 1024| HDD: Toshiba 2033 MB | OS: Windows 95 B | Mus: HP |

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Dec 2014

Fortfarande fullt rimligt att köra med websockets om du kontinuerligt ska ta emot data. Så fort det handlar om att strömma data från server till klient föredrar jag sockets (Alltså kontinuerligt skicka data, vilket jag skulle säga varje sekund räknas klart som).

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008
Skrivet av AfterShock:

Fortfarande fullt rimligt att köra med websockets om du kontinuerligt ska ta emot data. Så fort det handlar om att strömma data från server till klient föredrar jag sockets (Alltså kontinuerligt skicka data, vilket jag skulle säga varje sekund räknas klart som).

Jag gjorde en liten forskning kring websockets och det verkar endast rikta sig mot webappar, dvs HTML, JavaScript. Inget direkt rent REST API.

Men självklart ska jag använda det. Försöka iallafall.

| CPU: MMX 200 MHz Intel Pentium I| GPU: Voodo2 3dfx 8 Mb| RAM: SDRAM 32 Mb 133 Mhz | PSU: 3V fläkt 2W | Chassi: HP Vectra VE 5| Skärm: HP Ergo 1024| HDD: Toshiba 2033 MB | OS: Windows 95 B | Mus: HP |

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Dec 2014

@heretic16: Det stämmer. Det är inte REST. Men oftast går det att sätta upp ändå. Se bara till att klientsidan stödjer sockets.

I grunden är det samma sak som REST använder sig av så du lär hitta att det går att få till

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008
Skrivet av AfterShock:

@heretic16: Det stämmer. Det är inte REST. Men oftast går det att sätta upp ändå. Se bara till att klientsidan stödjer sockets.

I grunden är det samma sak som REST använder sig av så du lär hitta att det går att få till

Så jag kan inte använda WebSocket för vanlig konsol?

Eller ska man titta på Socket endast? Detta har jag hållit på med förut. Då ansluter jag Socket Client till Socket Server via REST.

| CPU: MMX 200 MHz Intel Pentium I| GPU: Voodo2 3dfx 8 Mb| RAM: SDRAM 32 Mb 133 Mhz | PSU: 3V fläkt 2W | Chassi: HP Vectra VE 5| Skärm: HP Ergo 1024| HDD: Toshiba 2033 MB | OS: Windows 95 B | Mus: HP |

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008

| CPU: MMX 200 MHz Intel Pentium I| GPU: Voodo2 3dfx 8 Mb| RAM: SDRAM 32 Mb 133 Mhz | PSU: 3V fläkt 2W | Chassi: HP Vectra VE 5| Skärm: HP Ergo 1024| HDD: Toshiba 2033 MB | OS: Windows 95 B | Mus: HP |

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Dec 2014

@heretic16: Rent tekniskt kan du men där kommer du inte på ett område jag inte rört så mycket så exakt hur du gör vet jag inte

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008
Skrivet av AfterShock:

@heretic16: Rent tekniskt kan du men där kommer du inte på ett område jag inte rört så mycket så exakt hur du gör vet jag inte

Jag fick ett tips från en kille som sade att jag bör kika lite på gPRC. Detta ska tydligen vara ett utmärkt och pedagogiskt sätt att tala med enheter över HTTP/2.

| CPU: MMX 200 MHz Intel Pentium I| GPU: Voodo2 3dfx 8 Mb| RAM: SDRAM 32 Mb 133 Mhz | PSU: 3V fläkt 2W | Chassi: HP Vectra VE 5| Skärm: HP Ergo 1024| HDD: Toshiba 2033 MB | OS: Windows 95 B | Mus: HP |

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Dec 2014

@heretic16: Precis det jag skrev i mitt första inlägg (gRPC delen då)

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008
Skrivet av AfterShock:

@heretic16: Precis det jag skrev i mitt första inlägg (gRPC delen då)

Blir inte gRPC en "blocking call" då i Spring?

Jag måste implementera anslutningarna i en @RESTController klass.

| CPU: MMX 200 MHz Intel Pentium I| GPU: Voodo2 3dfx 8 Mb| RAM: SDRAM 32 Mb 133 Mhz | PSU: 3V fläkt 2W | Chassi: HP Vectra VE 5| Skärm: HP Ergo 1024| HDD: Toshiba 2033 MB | OS: Windows 95 B | Mus: HP |