检查函数名称是否存在并通过字符串调用
我正在尝试促进和组织套接字通信和Node.JS之间的工作(我的项目太大)
不是使用客户端中的socket.emit()函数,而是使用我创建的函数:
function socketEmit(socketName, functionName, data){
socket.emit(socketName, {functionName: functionName, data: data});
}
socketEmit('exampleClass', 'exampleFunction', 'test');
socketEmit('exampleClass2', 'exampleFunction2', 'test');
发出后,我使用此功能在服务器端获取套接字(socket.on)。并根据“ socketName”]在类中注册它
socket.on('exampleClass', function (socketData){ var exampleClass = require('./server/exampleClass.js'); exampleClass.registerSocket(socket, socketData); }) socket.on('exampleClass2', function (socketData){ var exampleClass2 = require('./server/exampleClass2.js'); exampleClass2.registerSocket(socket, socketData); })
在类中具有该功能的“ registerSocket”以执行相同的功能
exampleClass.js
module.exports = { registerSocket: function(socket, socketData){ var functionName = socketData.functionName; var data = socketData.data; [functionName](socket, data); }, } function exampleFunction(socket, data){ console.log('test'); }
但是,registerSocket函数的这一部分出现错误:
[functionName] is not a function
我正在尝试促进和组织我的套接字通信和Node.JS之间的工作(我的项目太大),我使用我创建的函数来代替客户端的socket.emit()函数:...
回答如下:您正在尝试调用数组[functionName](socket, data);
。
检查函数名称是否存在并通过字符串调用
我正在尝试促进和组织套接字通信和Node.JS之间的工作(我的项目太大)
不是使用客户端中的socket.emit()函数,而是使用我创建的函数:
function socketEmit(socketName, functionName, data){
socket.emit(socketName, {functionName: functionName, data: data});
}
socketEmit('exampleClass', 'exampleFunction', 'test');
socketEmit('exampleClass2', 'exampleFunction2', 'test');
发出后,我使用此功能在服务器端获取套接字(socket.on)。并根据“ socketName”]在类中注册它
socket.on('exampleClass', function (socketData){ var exampleClass = require('./server/exampleClass.js'); exampleClass.registerSocket(socket, socketData); }) socket.on('exampleClass2', function (socketData){ var exampleClass2 = require('./server/exampleClass2.js'); exampleClass2.registerSocket(socket, socketData); })
在类中具有该功能的“ registerSocket”以执行相同的功能
exampleClass.js
module.exports = { registerSocket: function(socket, socketData){ var functionName = socketData.functionName; var data = socketData.data; [functionName](socket, data); }, } function exampleFunction(socket, data){ console.log('test'); }
但是,registerSocket函数的这一部分出现错误:
[functionName] is not a function
我正在尝试促进和组织我的套接字通信和Node.JS之间的工作(我的项目太大),我使用我创建的函数来代替客户端的socket.emit()函数:...
回答如下:您正在尝试调用数组[functionName](socket, data);
。