我想创建一个客户端函数,它可以使用客户端变量接收和执行任意命令。我将通过使用socket.io发送包含匿名函数的JSON对象来从我的服务器发送这些函数,该函数将成为我的命令。它看起来像下面这样:
//client side
socket.on('executecommand', function(data){
var a = "foo";
data.execute(a); //should produce "foo"
});
//server side
socket.emit('executecommand', {'execute': function(param){
console.log(param);
}});
字符串
然而,当我尝试它的时候,客户端收到一个空的json对象(data == {}
),然后抛出一个异常,因为数据中不包含任何方法execute。
3条答案
按热度按时间ao218c7q1#
JSON不支持包含
function
定义/表达式。你可以做的是用你需要的
function
s定义一个commands
对象,然后传递一个commandName
:个字符
你也可以使用
fn.apply()
来传递参数,并检查commandName
是否与in
匹配:的字符串
quhf5bfb2#
你不能发送文字JavaScript函数并期望它工作。你需要首先将函数字符串化(即将它放在一组引号内),然后在客户端对字符串进行求值。
ki1q1bka3#
我最终是这样做的。
把函数放在一个公共的地方(这里是
const.js
),然后发送密钥。字符串