dummy /ws server

main
Bel LaPointe 2024-12-14 19:41:17 -07:00
parent 6501934582
commit 33f2771014
1 changed files with 33 additions and 7 deletions

View File

@ -65,7 +65,7 @@ type S struct {
func (s *S) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if err := s.serveHTTP(w, r); err != nil {
log.Println(r.URL.Path, "//", err.Error(), r.Header)
log.Println(r.URL.Path, "//", err.Error())
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
@ -124,20 +124,46 @@ func (s *S) injectContext(w http.ResponseWriter, r *http.Request) error {
return nil
}
func (s *S) serveWS(httpw http.ResponseWriter, httpr *http.Request) error {
ctx := httpr.Context()
func (s *S) serveWS(w http.ResponseWriter, r *http.Request) error {
ctx := r.Context()
c, err := websocket.Accept(httpw, httpr, nil)
c, err := websocket.Accept(w, r, nil)
if err != nil {
return err
}
defer c.CloseNow()
if err := c.Write(ctx, 1, []byte("hello world")); err != nil {
for {
select {
case <-ctx.Done():
return nil
case <-time.After(time.Second):
switch r.URL.Path {
case "/ws/page/a":
if err := c.Write(ctx, 1, []byte(`{"page":"a", "items": [{"name":"x"}, {"name":"y"}]}`)); err != nil {
return err
}
case "/ws/page/a/event/a":
if err := c.Write(ctx, 1, []byte(`{"page":"a", "event":"a", "items": [{"name":"x"}, {"name":"y"}]}`)); err != nil {
return err
}
case "/ws/page/b/event/a":
if err := c.Write(ctx, 1, []byte(`{"page":"b", "event":"a", "items": [{"name":"x", "title":"x1", "tags":[{"k":"k", "v":"v"}, {"k":"K", "v":"V"}, {"k":"kkk","v":"vvv"}]}, {"name":"y", "tags":[{"k":"k", "v":"v"}, {"k":"K", "v":"V"}, {"k":"kkk","v":"vvv"}]}], "help": "hello world"}`)); err != nil {
return err
}
case "/ws/page/b/event/b":
if err := c.Write(ctx, 1, []byte(`{"page":"b", "event":"b", "items": [{"name":"x", "title":"x1", "tags":[{"k":"k", "v":"v"}, {"k":"K", "v":"V"}, {"k":"kkk","v":"vvv"}]}, {"name":"y", "tags":[{"k":"k", "v":"v"}, {"k":"K", "v":"V"}, {"k":"kkk","v":"vvv"}]}], "help": "hello world"}`)); err != nil {
return err
}
default:
if err := c.Write(ctx, 1, []byte(`hello world`)); err != nil {
return err
}
}
}
}
return fmt.Errorf("not impl")
return nil
}
func (s *S) serveV1(w http.ResponseWriter, r *http.Request) error {