Support subscriptions using SSE (Server-Sent Events) as alternative to websockets

Aperta
#476 1 commento 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
fsharp
Ambito
api

Direzione di ricerca

Inizia leggendo il GraphQL over Server-Sent Events Protocol collegato nell'issue e l'issue correlata #460, quindi confronta i suoi requisiti con il supporto esistente del progetto per le subscriptions. Il lavoro è completato quando il protocollo è implementato come alternativa a websocket, includendo il comportamento di autenticazione e annullamento, con copertura per i flussi di subscription supportati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

I propose that support is added for the GraphQL over Server-Sent Events Protocol, like HotChocolate has.

This simplifies authentication, since you can use the same authentication as normal HTTP requests.

I haven't looked at the GraphQL-specific parts of it, but SSE it itself technically very simple. Here is a demo:

Get(
    "/sse-test",
    RequestDelegate(fun (ctx: HttpContext) ->
        task {
            ctx.Response.Headers.Add("Content-Type", "text/event-stream")

            while not ctx.RequestAborted.IsCancellationRequested do
                do!
                    ctx.Response.WriteAsync(
                        $"data: {DateTime.Now}"
                    )

                do! ctx.Response.WriteAsync("\n\n")
                do! ctx.Response.Body.FlushAsync()
                do! Async.Sleep(1000)
        }
    )
)

You can test it by simply opening that endpoint in a browser (at least Edge works fine).

Related: #460

Lingua principale
F#
Stelle
406
Fork
74
Merge medio
1g 8h
PR unite (30g)
14

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di fsprojects/FSharp.Data.GraphQL

Tutte le issue di fsprojects/FSharp.Data.GraphQL

Issue simili

Altre issue su Backend & API Design

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.