0

i am hosting an app on heroku which is using socket.io. it is using sockets and i am using heroku 4 standard 1X dynos . So for this i used redistogo service and socket.io-redis plugin. it's working great but i want to know does socket.io-redis also clear the data from redis db when socket disconnected. Heroku redis goto service providing only 20MB data storage. .Please guideline How socket.io-redis inserting and clearing the data in redis database.

The Real Bill
  • 14,884
  • 8
  • 37
  • 39
mathlearner
  • 7,509
  • 31
  • 126
  • 189

2 Answers2

3

Assuming that you are referring to https://github.com/Automattic/socket.io-redis/blob/master/index.js, it appears that the plugin uses Redis' PubSub functionality. PubSub does not maintain state in the Redis database so there's no need to clear any data.

Itamar Haber
  • 47,336
  • 7
  • 91
  • 117
0

The session store is responsible for session clean up upon socket disconnection. I use https://github.com/tj/connect-redis for my session store.

Here is an example of cleaning up the socket connection properly upon disconnecting.

  const websocket = require('socket.io')(app.get('server'), {
    transports: process.env.transports
  })
  websocket.setMaxListeners(0)
  websocket.adapter(require('socket.io-redis')({
    host: process.env.redis_host,
    port: process.env.redis_port,
    key: 'socket_io',
    db: 2
  }))

  websocket.use((socket, next) => {
    app.get('session')(socket.request, socket.request.res || {}, next)
  })

  websocket.on('connection', socket => {
    var sess = socket.request.session
    socket.use((packet, next) => {
      if(!socket.rooms[sess.id]) {
        socket.join(sess.id, () => {
          websocket.of('/').adapter.remoteJoin(socket.id, sess.id, err => {
            delete socket.rooms[socket.id]
            next()
          })
        })
      }
    })  
    socket.on('disconnecting', () => {
      websocket.of('/').adapter.remoteDisconnect(sess.id, true, err => {
        delete socket.rooms[sess.id]
        socket.removeAllListeners()
      })
    })
  })
buycanna.io
  • 1,166
  • 16
  • 18