使用回调写入错误对象的可能性

时间:2014-09-09 19:04:56

标签: node.js socket.io

我正在使用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执行查询时。 所以我的问题是:是否有可能同时存在大量连接的错误分配?似乎已经发生这种情况并且数据被分配给错误的套接字对象。是否有更好的方法可靠地做这样的事情?

1 个答案:

答案 0 :(得分:0)

Socket对象有一个内置字段id。来自http://socket.io/docs/server-api/#

  

strong textSocket#id:String

     

套接字会话的唯一标识符,来自   底层客户。

您的代码正在尝试为此内置字段分配不同的值,这似乎是一个坏主意。您应该尝试将“您的”id字段重命名为authIduserId之类的字段,以避免此冲突。