2017-03-13 58 views
0

我想我找到了一個錯誤。如果我把socket.join(/ 任何房間在這裏 /)裏面的connection.query函數,它不會簡單地加入那個房間。有趣的事實是,執行console.log作品:爲什麼socket.join在connection.query中不起作用?

function registerInRoom (user, room) { 
    var post_room = {Users_user_id: user, Rooms_room_id: room, ur_id: undefined}; 
    connection.query('INSERT INTO mydb.users_has_rooms SET ?', post_room, function(err) { 
     if (err) throw err; 
     socket.room = room; 
     console.log("joined room"); 
     socket.join("Room 1"); 
    }); 

};//registerInRoom 

這裏是工作代碼:

function registerInRoom (user, room) { 
    var post_room = {Users_user_id: user, Rooms_room_id: room, ur_id: undefined}; 
    connection.query('INSERT INTO mydb.users_has_rooms SET ?', post_room, function(err) { 
     if (err) throw err; 
     socket.room = room; 
     console.log("joined room"); 
    }); 
    socket.join("Room 1"); 
};//registerInRoom 

我的問題是...我是什麼在我的思維過程,做錯了什麼?

+0

我相信你有一個詞法範圍的問題,因爲插座不一定內的局部存在該查詢,因爲它無法訪問它,它仍然未定義,因此不做任何事情。 –

+0

在節點的調試器,它說: 'socket.io:socket接合室1個+ 101ms socket.io:socket接合1'室 和在這個房間裏套接字發送消息後發出事件「發送消息」,並調度,但客戶在第二種情況下不接收包「新消息」。 – filemono

回答

0

原來我的問題是由覆蓋原socket.id什麼不應該做過引起:

socket.id = result.insertId; 
相關問題