2015-07-12 93 views
0
有麻烦

即时消息客户端costum用户ID发送到node.js的node.js的用户ID发送到客户端服务器

出于某种原因,它不会发送用户ID到服务器提交。节点日志中没有输出。

客户双面:

var socket = io.connect('http://sitename.eu:1337/'); 

var user_id = <?echo $data->userid?>; 


socket.on('connection',function(user_id) { 
    socket.emit('setuserid', user_id); 

}); 

服务器双面:

io.on('connection', function (socket){ // just to prove that the code is inside it 

logger.info('SocketIO > Connected socket ' + socket.id); 


socket.on('setuserid', function (userId) { 
    users[userId]=socket; 
    socket.userid = userId; 
    logger.info("setting userid..."); 
}); 

仅输出:

2015-07-12T21:09:05.656Z - info: SocketIO > Connected socket E2ghiXGfTJWtgWs4AAAA 
2015-07-12T21:09:08.134Z - info: SocketIO > Connected socket XY0c-A_ZveEUs_CuAAAB 
2015-07-12T21:09:21.393Z - info: SocketIO > Disconnected socket E2ghiXGfTJWtgWs4AAAA 
2015-07-12T21:09:22.610Z - info: SocketIO > Connected socket G3DmRKSymCuaximOAAAC 

回答

0

改变这一行:

socket.on('connection',function(user_id) {

成:

socket.on('connect',function() {

Socket.io触发称为connecthttp://socket.io/docs/client-api/#io#emitter)的事件。由于connection从不被调用,所以该函数永远不会运行。

另外,请确保您删除user_id作为参数。

否则,覆盖全球范围,将发送undefined并因此为用户标识

+0

所以,如果我让你改变它是否行得通呢?如果不是,由连接引起的永远不会被称为我该怎么做? – maria

+0

所以我怎么能改变它自动发送用户ID到节点? – maria

+0

@maria,你是否做过改变和测试? –

相关问题