Newer
Older
package main
import (
"context"
"log"
"net/http"
"time"
"gfx.cafe/open/jrpc/contrib/codecs"
"gfx.cafe/open/jrpc/contrib/extension/subscription"
"gfx.cafe/open/jrpc/contrib/jmux"
"gfx.cafe/open/jrpc/contrib/middleware"
r.HandleFunc("testservice/subscribe", func(w jsonrpc.ResponseWriter, r *jsonrpc.Request) {
notifier, ok := subscription.NotifierFromContext(r.Context())
if !ok {
w.Send(nil, subscription.ErrNotificationsUnsupported)
return
idx := 0
for {
select {
case <-r.Context().Done():
return
case <-notifier.Err():
return
default:
})
go func() {
err := client()
if err != nil {
panic(err)
}
}()
log.Println("running on 8855")
handler := codecs.HttpWebsocketHandler(srv, []string{"*"})
err := http.ListenAndServe(":8855", handler)
if err != nil {
log.Println(err)
}
if err != nil {
return err
}
out := make(chan int, 1)
jcs, err := cl.Subscribe(context.TODO(), "testservice", out, []any{"swag"})
if err != nil {
return err
}
go func() {
log.Println(<-jcs.Err())
}()
defer jcs.Unsubscribe()
for {