sockets.js 717 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. let sharedSession = require("express-socket.io-session")
  2. module.exports = {
  3. init (app, server, session) {
  4. let io = require('socket.io')(server)
  5. function setIoSockets (socket) {
  6. let users = app.get('io-users')
  7. if(socket.handshake.session.loggedIn) {
  8. users[socket.handshake.session.username] = socket.id
  9. app.set('io-users', users)
  10. }
  11. }
  12. app.set('io-users', {})
  13. io.use(sharedSession(session, {
  14. autoSave: true
  15. }))
  16. io.on('connection', socket => {
  17. setIoSockets(socket)
  18. socket.on('join', room => {
  19. socket.join(room)
  20. })
  21. socket.on('leave', room => {
  22. socket.leave(room)
  23. })
  24. socket.on('login', _ => {
  25. setIoSockets(socket)
  26. })
  27. })
  28. app.set('io', io)
  29. }
  30. }