【发布时间】:2017-05-02 16:05:04
【问题描述】:
我想使用socket.io 来跟踪应用程序的每日活跃用户。我的套接字连接如下所示:
let visitorData = {};
io.on('connection', (socket) => {
socket.on('user', (data) => {
visitorData[socket.id] = data;
})
socket.on('disconnect', () => {
delete visitorData[socket.id]
})
})
我希望能够将现有的 Node/Express 路由 和接收到的数据合并到套接字连接。特别是,我将如何处理到 /login 端点的 POST 以将登录用户名与套接字 ID 连接相关联。
例如:
app.get('/login', (req, res, next) => {
const someSocket = /* socket */
const someSocketId = /* socket id */;
visitorData[someSocketId] = req.body.username;
someSocket.emit('user', visitorData);
})
有没有一种方法可以将 socket.io 合并到 Node/Express 路由中,以 (a) 将用户与 socket.id 和 (b) 来自请求/响应正文的 emit 信息相关联?强>
【问题讨论】:
-
嗯,类似的想法。但是那篇文章与 PHP 和会话有关……我正在处理 Node/Express,而我的问题与会话无关。只需将路由请求/响应主体合并到套接字中。
-
您是要跟踪活跃用户,还是只计算当前活跃用户的数量?你到底想用这个做什么?它是一个聊天工具,可以跟踪房间里的人数吗?计数比单独跟踪每个用户要容易得多。如果您需要多个服务器(cpu 内核),这也变得更具挑战性,如果您有很多人,您将需要这些服务器。
-
我想跟踪活动用户并将用户名(在 /login POST 上)与给定的套接字 ID 相关联,然后发出该数据以供客户端使用。