所以我希望能够使用节点通过socket.io运行自定义函数我的基本想法很简单,我只是无法让它工作。一般来说,你会写一些类似的东西来对传入的消息运行一个函数......
//server
socket.on('incomingMessage', function(data) {
console.log(data);
io.sockets.emit('newMessage', {id: data.id, from: data.name, message: data.message});
});
//client
socket.on('newMessage', function(data) {
$('#messages').html($('#messages').html() + data.message);
$('#from').html($('#from').html() + data.from);
});
但我想做的是让它变得更加动态,并实际传递我想在消息本身中运行的函数,所以像这样......
//server
socket.on('customFunction', function(data) {
console.log(data);
io.sockets.emit('runFunction', data);
})
//client
socket.on('runFunction', function(data) {
for(var index in data) {
args.push(data[index]);
}
data.fn.apply(this, args);
});
但是当我使用类似的东西从客户那里打电话时......
socket.emit('customFunction', {id: sessionId, name: user.name, callBack: function() { alert('it worked');
}
});
在服务器上,它记录的唯一内容是会话 ID 和名称,callBack(无论名称如何,我都尝试过 func、run、cb、callBack、customFunc)就消失了。所以我有点不知所措。有人有想法么?提前感谢您的帮助。我不知道为什么,但是当调用它时,它只记录会话 id 和名称元素、回调或 fn 或其他任何东西,只是不存在。node 或 socket.io 是否在发送内容时从参数中删除函数?