Skip to content

Commit 46e58c9

Browse files
committed
fix reports stream, and small logging improvements
1 parent 37c506c commit 46e58c9

File tree

4 files changed

+27
-11
lines changed

4 files changed

+27
-11
lines changed

examples/reports.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"github.com/mbertschler/guiapi"
14+
"github.com/mbertschler/guiapi/api"
1415
"github.com/mbertschler/html"
1516
"github.com/mbertschler/html/attr"
1617
)
@@ -201,7 +202,10 @@ type ReportsStream struct {
201202
}
202203

203204
func (r *ReportsPage) WriteHTML(w io.Writer) error {
204-
stream, err := json.Marshal(r.Stream)
205+
stream, err := json.Marshal(api.Stream{
206+
Name: "Reports",
207+
Args: r.Stream,
208+
})
205209
if err != nil {
206210
return err
207211
}

guiapi.js

+4
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,10 @@ function setupHistory() {
288288
if (!s) {
289289
s = originalState
290290
}
291+
if (!s) {
292+
console.warn("no originalState", originalState, e)
293+
return
294+
}
291295
guiapiPage(s.url)
292296
})
293297
}

websocket.go

+16-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"encoding/json"
66
"log"
7-
"time"
7+
"math/rand"
88

99
"nhooyr.io/websocket"
1010
)
@@ -17,6 +17,7 @@ type websocketMessage struct {
1717
}
1818

1919
func (s *Server) websocketHandler(c *PageCtx) {
20+
streamID := rand.Intn(10000)
2021
conn, err := websocket.Accept(c.Writer, c.Request, &websocket.AcceptOptions{
2122
Subprotocols: []string{"guiapi"},
2223
})
@@ -38,10 +39,10 @@ func (s *Server) websocketHandler(c *PageCtx) {
3839
ch := make(chan *Response, 1)
3940
defer close(ch)
4041

41-
id := time.Now().UnixMilli() % 1000
42+
log.Println("start websocket", streamID)
4243

4344
go func() {
44-
defer log.Println("exit websocket writer", id)
45+
defer log.Println("exit websocket writer", streamID)
4546
for {
4647
select {
4748
case <-ctx.Done():
@@ -53,7 +54,7 @@ func (s *Server) websocketHandler(c *PageCtx) {
5354
return
5455
case resp, ok := <-ch:
5556
if !ok {
56-
log.Println("websocket writer not ok", id)
57+
log.Println("websocket writer not ok", streamID)
5758
return
5859
}
5960
buf, err := json.Marshal(resp)
@@ -75,11 +76,15 @@ func (s *Server) websocketHandler(c *PageCtx) {
7576
defer close(messages)
7677

7778
go func() {
78-
defer log.Println("exit websocket reader", id)
79+
defer log.Println("exit websocket reader", streamID)
7980
for {
8081
msgType, buf, err := conn.Read(ctx)
8182
if err != nil {
82-
log.Println("websocket read error:", err)
83+
if websocket.CloseStatus(err) == websocket.StatusGoingAway {
84+
log.Println("websocket going away")
85+
} else {
86+
log.Println("websocket read error:", err, "CloseStatus:", websocket.CloseStatus(err))
87+
}
8388
cancel()
8489
return
8590
}
@@ -90,14 +95,14 @@ func (s *Server) websocketHandler(c *PageCtx) {
9095
select {
9196
case messages <- buf:
9297
case <-ctx.Done():
93-
log.Println("websocket reader blocked", id)
98+
log.Println("websocket reader blocked", streamID)
9499
}
95100
}
96101
}()
97102

98103
var previousCancel context.CancelFunc
104+
defer log.Println("exit websocketHandler", streamID)
99105
for {
100-
defer log.Println("exit websocket router", id)
101106
select {
102107
case <-ctx.Done():
103108
return
@@ -106,7 +111,7 @@ func (s *Server) websocketHandler(c *PageCtx) {
106111
previousCancel()
107112
}
108113
if !ok {
109-
log.Println("websocket router not ok", id)
114+
log.Println("websocket router not ok", streamID)
110115
return
111116
}
112117
var msg websocketMessage
@@ -116,12 +121,13 @@ func (s *Server) websocketHandler(c *PageCtx) {
116121
cancel()
117122
break
118123
}
124+
log.Printf("websocket message %q %s", msg.Name, msg.Args)
119125
subCtx, subCancel := context.WithCancel(ctx)
120126
previousCancel = subCancel
121127
go func() {
122128
fn := s.streams[msg.Name]
123129
if fn == nil {
124-
log.Println("StreamRouter error: unknown stream", msg.Name)
130+
log.Println("StreamRouter error: unknown stream", msg.Name, string(buf))
125131
cancel()
126132
return
127133
}

websocket.js

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ class Stream {
1111
}
1212

1313
subscribe = (data) => {
14+
console.log("Stream.subscribe()", data)
15+
1416
this.tries = 0
1517
if (this.open) {
1618
this.current = data

0 commit comments

Comments
 (0)