dummy /ws server
parent
6501934582
commit
33f2771014
|
|
@ -65,7 +65,7 @@ type S struct {
|
||||||
|
|
||||||
func (s *S) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (s *S) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
if err := s.serveHTTP(w, r); err != nil {
|
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)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -124,20 +124,46 @@ func (s *S) injectContext(w http.ResponseWriter, r *http.Request) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *S) serveWS(httpw http.ResponseWriter, httpr *http.Request) error {
|
func (s *S) serveWS(w http.ResponseWriter, r *http.Request) error {
|
||||||
ctx := httpr.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
c, err := websocket.Accept(httpw, httpr, nil)
|
c, err := websocket.Accept(w, r, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer c.CloseNow()
|
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
|
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 {
|
func (s *S) serveV1(w http.ResponseWriter, r *http.Request) error {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue