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

Permalänk

Ä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?

Permalänk
Permalänk
Medlem

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.

Visa signatur

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 |

Permalänk
Medlem

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

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Medlem

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

Permalänk

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?

Permalänk
Medlem

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).

Permalänk
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.

Permalänk
Medlem

@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

Permalänk
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.

Permalänk
Permalänk
Medlem

@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

Permalänk
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.

Permalänk
Medlem

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

Permalänk
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.