implement auth, closed and close envelopes
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
package app
|
||||
|
||||
func (s *Server) HandleMessage() {
|
||||
import (
|
||||
"lol.mleku.dev/log"
|
||||
)
|
||||
|
||||
func (s *Server) HandleMessage(msg []byte) {
|
||||
log.I.F("received message:\n%s\n", msg)
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var conn *websocket.Conn
|
||||
if conn, err = websocket.Accept(
|
||||
w, r, &websocket.AcceptOptions{},
|
||||
w, r, &websocket.AcceptOptions{OriginPatterns: []string{"*"}},
|
||||
); chk.E(err) {
|
||||
return
|
||||
}
|
||||
@@ -48,8 +48,8 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) {
|
||||
default:
|
||||
}
|
||||
var typ websocket.MessageType
|
||||
var message []byte
|
||||
if typ, message, err = conn.Read(s.Ctx); err != nil {
|
||||
var msg []byte
|
||||
if typ, msg, err = conn.Read(s.Ctx); err != nil {
|
||||
if strings.Contains(
|
||||
err.Error(), "use of closed network connection",
|
||||
) {
|
||||
@@ -68,12 +68,12 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
if typ == PingMessage {
|
||||
if err = conn.Write(s.Ctx, PongMessage, message); chk.E(err) {
|
||||
if err = conn.Write(s.Ctx, PongMessage, msg); chk.E(err) {
|
||||
return
|
||||
}
|
||||
continue
|
||||
}
|
||||
go s.HandleMessage()
|
||||
go s.HandleMessage(msg)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"lol.mleku.dev/chk"
|
||||
"lol.mleku.dev/log"
|
||||
"next.orly.dev/app/config"
|
||||
)
|
||||
@@ -20,11 +21,14 @@ func Run(ctx context.Context, cfg *config.C) (quit chan struct{}) {
|
||||
}()
|
||||
// start listener
|
||||
l := &Server{
|
||||
Ctx: ctx,
|
||||
Config: cfg,
|
||||
}
|
||||
addr := fmt.Sprintf("%s:%d", cfg.Listen, cfg.Port)
|
||||
log.I.F("starting listener on %s", addr)
|
||||
go http.ListenAndServe(addr, l)
|
||||
log.I.F("starting listener on http://%s", addr)
|
||||
go func() {
|
||||
chk.E(http.ListenAndServe(addr, l))
|
||||
}()
|
||||
quit = make(chan struct{})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -21,6 +21,10 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
} else if r.Header.Get("Accept") == "application/nostr+json" {
|
||||
s.HandleRelayInfo(w, r)
|
||||
} else {
|
||||
http.Error(w, "Upgrade required", http.StatusUpgradeRequired)
|
||||
if s.mux == nil {
|
||||
http.Error(w, "Upgrade required", http.StatusUpgradeRequired)
|
||||
} else {
|
||||
s.mux.ServeHTTP(w, r)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user