-
Notifications
You must be signed in to change notification settings - Fork 5
/
socketapi.js
29 lines (22 loc) · 761 Bytes
/
socketapi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
const { Server } = require('socket.io')
const { JoinGame, LeaveGame } = require('./application/api/commands/player')
let init = (server, events, application) => {
const io = new Server(server)
const publish = (event) => {
console.log({ event })
io.to(event.gameId).emit('message', event)
}
io.on('connection', (socket) => {
const { gameId, workColumnId } = socket.handshake.query
socket.join(gameId)
socket.emit('replay', events.eventsFor(gameId))
if (workColumnId) {
application.execute(JoinGame({ gameId, columnId: workColumnId }))
socket.on('disconnect', () => {
application.execute(LeaveGame({ gameId, columnId: workColumnId }))
})
}
})
return { publish }
}
module.exports = { init }