【问题标题】:Socket.io redis How data stored and clearedSocket.io redis 数据如何存储和清除
【发布时间】:2015-09-07 19:30:27
【问题描述】:

我正在使用 socket.io 的 heroku 上托管一个应用程序。它正在使用套接字,我正在使用 heroku 4 标准 1X dynos 。所以为此我使用了 redistogo 服务和 socket.io-redis 插件。它工作得很好,但我想知道 socket.io-redis 在套接字断开连接时是否也会清除 redis db 中的数据。 Heroku redis goto 服务仅提供 20MB 数据存储。 .请指导socket.io-redis如何插入和清除redis数据库中的数据。

【问题讨论】:

    标签: redis socket.io socket.io-redis


    【解决方案1】:

    假设您指的是https://github.com/Automattic/socket.io-redis/blob/master/index.js,该插件似乎使用了 Redis 的 PubSub 功能。 PubSub 不会在 Redis 数据库中维护状态,因此无需清除任何数据。

    【讨论】:

      【解决方案2】:

      会话存储负责在套接字断开连接时清理会话。我将https://github.com/tj/connect-redis 用于我的会话存储。

      这是一个在断开连接时正确清理套接字连接的示例。

        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()
            })
          })
        })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-16
        • 2014-11-13
        • 2021-01-13
        • 2014-03-06
        • 1970-01-01
        • 1970-01-01
        • 2022-08-05
        相关资源
        最近更新 更多