2011-11-14 74 views
1

有没有一种方法可以定义自定义function (name,data,callback),然后在客户端发送函数调用时由socket.io调用?Socket.IO:调用自定义函数,而不是使用socket.on

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

我检查了socket.io维基,但没有找到任何相关的。

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

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

回答

3

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

服务器:

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

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

客户:

socket.send(name, data, callback); 

这种方式,您只需使用Socket.IO作为WebSockets的包装。

如果你正在寻找更多的花式,也许你应该检查出nowjsdnode

+0

'socket.send'只支持2个参数:数据和回调。不过回调被窃听(这里提交bug报告:https://github.com/LearnBoost/socket.io/issues/645)。我实际上就像你现在所建议的那样(使用bugfix)。我用'socket.json.send([name,data],cb)''发送。 (json消息标志) – Eliasdx

+0

嗯,也许'发送'不应该有回调,我不知道。你总是可以恢复到“发射”状态,因为无论如何你只需要一个绑定,将来很容易就可以改变它。除了美学之外,不使用“排放”的其他原因? –

+0

???它是如何假设服务器端的handleMessage()函数*能够在客户端调用'callback' * *? – cibercitizen1