@@ -21,7 +21,7 @@ import (
21
21
// MountHandler the func that is called by a handler to gather data to
22
22
// be rendered in a template. This is called on first GET and then later when
23
23
// the web socket first connects.
24
- type MountHandler func (ctx context.Context , h * Handler , r * http.Request , c * Socket , connected bool ) (interface {}, error )
24
+ type MountHandler func (ctx context.Context , r * http.Request , c * Socket ) (interface {}, error )
25
25
26
26
// RenderHandler the func that is called to render the current state of the
27
27
// data for the socket.
@@ -77,7 +77,7 @@ func NewHandler(store SessionStore, configs ...HandlerConfig) (*Handler, error)
77
77
broadcastLimiter : rate .NewLimiter (rate .Every (time .Millisecond * 100 ), 8 ),
78
78
eventHandlers : make (map [string ]EventHandler ),
79
79
selfHandlers : make (map [string ]EventHandler ),
80
- Mount : func (ctx context.Context , hd * Handler , r * http.Request , c * Socket , connected bool ) (interface {}, error ) {
80
+ Mount : func (ctx context.Context , r * http.Request , c * Socket ) (interface {}, error ) {
81
81
return nil , nil
82
82
},
83
83
Render : func (ctx context.Context , data interface {}) (io.Reader , error ) {
@@ -122,11 +122,6 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
122
122
return
123
123
}
124
124
125
- // Self sends a message to the socket on this view.
126
- func (h * Handler ) Self (ctx context.Context , sock * Socket , msg Event ) {
127
- handleEmittedEvent (ctx , h , sock , msg )
128
- }
129
-
130
125
// Broadcast send a message to all sockets connected to this view.
131
126
func (h * Handler ) Broadcast (msg Event ) {
132
127
ctx := context .Background ()
@@ -140,7 +135,7 @@ func (h *Handler) HandleEvent(t string, handler EventHandler) {
140
135
h .eventHandlers [t ] = handler
141
136
}
142
137
143
- // HandleSelf handles an event that comes from the view . For example calling
138
+ // HandleSelf handles an event that comes from the server side socket . For example calling
144
139
// h.Self(socket, msg) will be handled here.
145
140
func (h * Handler ) HandleSelf (t string , handler EventHandler ) {
146
141
h .selfHandlers [t ] = handler
@@ -152,6 +147,11 @@ func (h *Handler) HandleParams(handler EventHandler) {
152
147
h .paramsHandlers = append (h .paramsHandlers , handler )
153
148
}
154
149
150
+ // self sends a message to the socket on this view.
151
+ func (h * Handler ) self (ctx context.Context , sock * Socket , msg Event ) {
152
+ handleEmittedEvent (ctx , h , sock , msg )
153
+ }
154
+
155
155
// serveHTTP serve an http request to the view.
156
156
func (h * Handler ) serveHTTP (w http.ResponseWriter , r * http.Request ) {
157
157
// Get session.
@@ -162,16 +162,16 @@ func (h *Handler) serveHTTP(w http.ResponseWriter, r *http.Request) {
162
162
}
163
163
164
164
// Get socket.
165
- sock := NewSocket (session )
165
+ sock := NewSocket (session , h , false )
166
166
167
167
// Run mount, this generates the data for the page we are on.
168
- if err := sock .mount (r .Context (), h , r , false ); err != nil {
168
+ if err := sock .mount (r .Context (), h , r ); err != nil {
169
169
h .Error (r .Context (), w , r , err )
170
170
return
171
171
}
172
172
173
173
// Handle any query parameters that are on the page.
174
- if err := sock .params (r .Context (), h , r , false ); err != nil {
174
+ if err := sock .params (r .Context (), h , r ); err != nil {
175
175
h .Error (r .Context (), w , r , err )
176
176
return
177
177
}
@@ -236,7 +236,7 @@ type eventError struct {
236
236
func (h * Handler ) _serveWS (r * http.Request , session Session , c * websocket.Conn ) error {
237
237
ctx := r .Context ()
238
238
// Get the sessions socket and register it with the server.
239
- sock := NewSocket (session )
239
+ sock := NewSocket (session , h , true )
240
240
sock .assignWS (c )
241
241
h .addSocket (sock )
242
242
defer h .deleteSocket (sock )
@@ -296,12 +296,12 @@ func (h *Handler) _serveWS(r *http.Request, session Session, c *websocket.Conn)
296
296
297
297
// Run mount again now that eh socket is connected, passing true indicating
298
298
// a connection has been made.
299
- if err := sock .mount (ctx , h , r , true ); err != nil {
299
+ if err := sock .mount (ctx , h , r ); err != nil {
300
300
return fmt .Errorf ("socket mount error: %w" , err )
301
301
}
302
302
303
303
// Run params again now that the socket is connected.
304
- if err := sock .params (r .Context (), h , r , true ); err != nil {
304
+ if err := sock .params (r .Context (), h , r ); err != nil {
305
305
return fmt .Errorf ("socket params error: %w" , err )
306
306
}
307
307
0 commit comments