@@ -117,38 +117,34 @@ From here, let's add some features to that function that allow us to manage conn
117
117
### Register connections on connect
118
118
119
119
``` go
120
- ws.On (handler. WebsocketConnect , func (ctx *handler. WebsocketContext , next handler. WebsocketHandler ) (*handler. WebsocketContext , error ) {
120
+ ws.On (websockets. EventType_Connect , func (ctx *websockets. Ctx ) {
121
121
err := connections.Set (context.TODO (), ctx.Request .ConnectionID (), map [string ]interface {}{
122
122
" connectionId" : ctx.Request .ConnectionID (),
123
123
})
124
124
if err != nil {
125
- return ctx, err
125
+ return
126
126
}
127
-
128
- return next (ctx)
129
127
})
130
128
```
131
129
132
130
### Remove connections on disconnect
133
131
134
132
``` go
135
- ws.On (handler. WebsocketDisconnect , func (ctx *handler. WebsocketContext , next handler. WebsocketHandler ) (*handler. WebsocketContext , error ) {
133
+ ws.On (websockets. EventType_Disconnect , func (ctx *websockets. Ctx ) {
136
134
err := connections.Delete (context.TODO (), ctx.Request .ConnectionID ())
137
135
if err != nil {
138
- return ctx, err
136
+ return
139
137
}
140
-
141
- return next (ctx)
142
138
})
143
139
```
144
140
145
141
### Broadcast messages to all connected clients
146
142
147
143
``` go
148
- ws.On (handler. WebsocketMessage , func (ctx *handler. WebsocketContext , next handler. WebsocketHandler ) (*handler. WebsocketContext , error ) {
144
+ ws.On (websockets. EventType_Message , func (ctx *websockets. Ctx ) {
149
145
connectionStream , err := connections.Keys (context.TODO ())
150
146
if err != nil {
151
- return ctx, err
147
+ return
152
148
}
153
149
154
150
senderId := ctx.Request .ConnectionID ()
@@ -166,11 +162,9 @@ ws.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler
166
162
message := fmt.Sprintf (" %s : %s " , senderId, ctx.Request .Message ())
167
163
err = ws.Send (context.TODO (), connectionId, []byte (message))
168
164
if err != nil {
169
- return ctx, err
165
+ return
170
166
}
171
167
}
172
-
173
- return next (ctx)
174
168
})
175
169
```
176
170
@@ -186,8 +180,8 @@ import (
186
180
" context"
187
181
" fmt"
188
182
189
- " github.com/nitrictech/go-sdk/handler"
190
183
" github.com/nitrictech/go-sdk/nitric"
184
+ " github.com/nitrictech/go-sdk/nitric/websockets"
191
185
)
192
186
193
187
func main () {
@@ -203,30 +197,26 @@ func main() {
203
197
return
204
198
}
205
199
206
- ws.On (handler. WebsocketConnect , func (ctx *handler. WebsocketContext , next handler. WebsocketHandler ) (*handler. WebsocketContext , error ) {
200
+ ws.On (websockets. EventType_Connect , func (ctx *websockets. Ctx ) {
207
201
err := connections.Set (context.TODO (), ctx.Request .ConnectionID (), map [string ]interface {}{
208
202
" connectionId" : ctx.Request .ConnectionID (),
209
203
})
210
204
if err != nil {
211
- return ctx, err
205
+ return
212
206
}
213
-
214
- return next (ctx)
215
207
})
216
208
217
- ws.On (handler. WebsocketDisconnect , func (ctx *handler. WebsocketContext , next handler. WebsocketHandler ) (*handler. WebsocketContext , error ) {
209
+ ws.On (websockets. EventType_Disconnect , func (ctx *websockets. Ctx ) {
218
210
err := connections.Delete (context.TODO (), ctx.Request .ConnectionID ())
219
211
if err != nil {
220
- return ctx, err
212
+ return
221
213
}
222
-
223
- return next (ctx)
224
214
})
225
215
226
- ws.On (handler. WebsocketMessage , func (ctx *handler. WebsocketContext , next handler. WebsocketHandler ) (*handler. WebsocketContext , error ) {
216
+ ws.On (websockets. EventType_Message , func (ctx *websockets. Ctx ) {
227
217
connectionStream , err := connections.Keys (context.TODO ())
228
218
if err != nil {
229
- return ctx, err
219
+ return
230
220
}
231
221
232
222
senderId := ctx.Request .ConnectionID ()
@@ -244,11 +234,9 @@ func main() {
244
234
message := fmt.Sprintf (" %s : %s " , senderId, ctx.Request .Message ())
245
235
err = ws.Send (context.TODO (), connectionId, []byte (message))
246
236
if err != nil {
247
- return ctx, err
237
+ return
248
238
}
249
239
}
250
-
251
- return next (ctx)
252
240
})
253
241
254
242
if err := nitric.Run (); err != nil {
0 commit comments