Slide 36
Slide 36 text
type MessageEndpoint func(ctx context.Context, m Message, w *Writer) error
type Router struct {
endpoints map[string]MessageEndpoint
writer map[string]*Writer
}
func (r *Router) HandleConnection(conn *websocket.Conn) {
w := r.NewWriter(conn)
for {
_, message, err := conn.ReadMessage()
if err != nil {
break
}
request := string(message)
r.writer[w.ID] = w
r.Route(context.Background(), w, request)
}
delete(r.writer, r.ID(conn))
}