node.js的用户ID发送到客户端服务器
问题描述:
有麻烦
即时消息客户端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
答
改变这一行:
socket.on('connection',function(user_id) {
成:
socket.on('connect',function() {
Socket.io触发称为connect
(http://socket.io/docs/client-api/#io#emitter)的事件。由于connection
从不被调用,所以该函数永远不会运行。
另外,请确保您删除user_id
作为参数。
否则,覆盖全球范围,将发送undefined
并因此为用户标识
所以,如果我让你改变它是否行得通呢?如果不是,由连接引起的永远不会被称为我该怎么做? – maria
所以我怎么能改变它自动发送用户ID到节点? – maria
@maria,你是否做过改变和测试? –