【发布时间】:2017-02-06 09:39:44
【问题描述】:
各位, 有什么方法可以创建基于会话的数组或 memorydb 或任何其他可以创建可以在所有客户端之间共享的数据池的技术。 基本上,我需要制作一个基于 socket.io 的聊天应用程序,它可以跟踪所有登录用户。它将登录用户数组推送到所有客户端或任何新客户端加入。 感谢您的帮助。
【问题讨论】:
标签: node.js express memory socket.io shared
各位, 有什么方法可以创建基于会话的数组或 memorydb 或任何其他可以创建可以在所有客户端之间共享的数据池的技术。 基本上,我需要制作一个基于 socket.io 的聊天应用程序,它可以跟踪所有登录用户。它将登录用户数组推送到所有客户端或任何新客户端加入。 感谢您的帮助。
【问题讨论】:
标签: node.js express memory socket.io shared
你应该用你的 socket-io 配置 socket.io-redis 或 socket-io-mongodb 适配器
要将在线用户列表发送到客户端,您可以在 mongodb 或 redis 或 MySQl 中创建一个文档。当触发 socket.on('connection') 时 使用
从中获取用户 IDvar userId = socket.request.user.id;
var socketId = socket.id;
并将其保存在数据库中。
每当套接字断开连接时,将其从数据库中删除。
当客户端登录并请求在线用户从数据库中获取它并在每个套接字上运行 io.sockets.connected[socketId] 以验证套接字是否仍然连接并将列表发送回客户端。
https://github.com/socketio/socket.io-redis https://www.npmjs.com/package/socket.io-mongodb
【讨论】: