我正在使用NodeJS Socket.IO服务器来处理实时的事情。 Socket.IO中还有一个用于验证用户身份的事件。代码如下:
var io = require('socket.io').listen(8080)
io.on('connection', function(socket) {
socket.on('auth', function(id) {
conn.query('SELECT id FROM u WHERE id = ?', id, function(e, result) {
socket.id = result[0].id
})
})
)}
我担心的是这条线:
socket.id = result[0].id
这是一个回调。当DB执行查询时。 所以我的问题是:是否有可能同时存在大量连接的错误分配?似乎已经发生这种情况并且数据被分配给错误的套接字对象。是否有更好的方法可靠地做这样的事情?
答案 0 :(得分:0)
Socket对象有一个内置字段id
。来自http://socket.io/docs/server-api/#
strong textSocket#id:String
套接字会话的唯一标识符,来自 底层客户。
您的代码正在尝试为此内置字段分配不同的值,这似乎是一个坏主意。您应该尝试将“您的”id
字段重命名为authId
或userId
之类的字段,以避免此冲突。