Newer
Older
"gfx.cafe/open/jrpc/pkg/server"
)
type Server struct {
Server *server.Server
}
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if s.Server == nil {
http.Error(w, "no server set", http.StatusInternalServerError)
return
}
conn, err := websocket.Accept(w, r, nil)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
}
// WebsocketHandler returns a handler that serves JSON-RPC to WebSocket connections.
//
// allowedOrigins should be a comma-separated list of allowed origin URLs.
// To allow connections with any origin, pass "*".
func WebsocketHandler(s *server.Server, allowedOrigins []string) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
conn, err := websocket.Accept(w, r, &websocket.AcceptOptions{
OriginPatterns: allowedOrigins,
CompressionMode: websocket.CompressionContextTakeover,
CompressionThreshold: 4096,
})
if err != nil {
return
}