sockets.js 788 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. module.exports = {
  2. init (app, server, session) {
  3. let io = require('socket.io')(server)
  4. function setIoSockets (socket) {
  5. let users = app.get('io-users')
  6. if(socket.handshake.session.loggedIn) {
  7. users[socket.handshake.session.username] = socket.id
  8. app.set('io-users', users)
  9. }
  10. }
  11. app.set('io-users', {})
  12. io.use((socket, next) => {
  13. session(socket.handshake, {}, next)
  14. })
  15. io.on('connection', socket => {
  16. setIoSockets(socket)
  17. socket.on('join', room => {
  18. socket.join(room)
  19. })
  20. socket.on('leave', room => {
  21. socket.leave(room)
  22. })
  23. socket.on('login', _ => {
  24. socket.handshake.session.reload(err => {
  25. if(!err) {
  26. setIoSockets(socket)
  27. } else {
  28. console.log(err)
  29. }
  30. })
  31. })
  32. })
  33. app.set('io', io)
  34. }
  35. }