Socket.IO:调用自定义函数,而不是使用Socket.on

Socket.IO:调用自定义函数,而不是使用Socket.on,socket.io,Socket.io,有没有一种方法可以定义自定义的函数(名称、数据、回调),当客户端发送函数调用时,socket.io会调用该函数 不要使用socket.on(name,function(data,callback){…})socket.io应该调用我的函数。这将使实现每个socket.io函数所需的逻辑变得更加容易,并且我不需要为每个连接上的整个rpc函数堆栈调用socket.on 我查看了socket.io wiki,但没有找到任何相关内容 我知道我可以像这样在socket.io之上实现一个“rpc服务器”,但

有没有一种方法可以定义自定义的
函数(名称、数据、回调)
,当客户端发送函数调用时,socket.io会调用该函数

不要使用
socket.on(name,function(data,callback){…})
socket.io应该调用我的函数。这将使实现每个socket.io函数所需的逻辑变得更加容易,并且我不需要为每个连接上的整个rpc函数堆栈调用
socket.on

我查看了socket.io wiki,但没有找到任何相关内容

我知道我可以像这样在socket.io之上实现一个“rpc服务器”,但最好使用socket.io的原生方式

socket.on('rpc',function(data,callback){ /* e.g. data.name for function name, data.data for the actual data */});

不知道我是否得到了它。你不能这样做吗

服务器:

function handleMessage(name, data, callback) {
  // ...
}

// listen on all kind of messages
socket.on('message', handleMessage);
客户:

socket.send(name, data, callback);
这样,您只需将Socket.IO用作WebSockets包装器


如果您正在寻找更奇特的东西,也许您应该签出或。

socket.send
只支持两个参数:data和callback。然而,回调被窃听了(这里的错误报告存档:)。事实上,我现在正在按照您的建议(使用bugfix)进行操作。我使用
socket.json.send([name,data],cb)
发送。(json消息标志)嗯,也许
send
不应该有回调,我不确定。您可以暂时恢复到
emit
,因为您将只拥有一个绑定,将来很容易更改它。除美观外,不使用
emit
的任何其他原因????服务器端的handleMessage()函数如何能够调用客户端的
callback
?????