2011-11-09 67 views
2

我正在寻找一种方式来实现双向RPC的Node.js(指客户端和服务器提供远程调用过程,最好像JSON-RPC)。它应该可以在客户端的socket.io和TCP/IP套接字之上使用。我正要使用nowjs为的WebSockets,并为“正常”插座一个单独的API。TCP套接字+ socket.io双向(JSON-)RPC:dnode?

现在我刚刚发现dnode哪些声称与这两个工作。 “它适用于网络套接字,甚至在使用socket.io的浏览器中。”

我需要将JSON对象(包含字符串)传递给对方。客户端将写入JavaScript(浏览器),JavaScript(Appcelerator Titanium),C#和也许Java(Android),但只有Java的实现。我读了protocol,我认为这并不容易实现。

连接建立后,还有一个方法名称交换,这将是我的应用程序中的一个开销,我不需要它,因为我知道我在另一侧实现了什么(它不是公共API)。

有人有这方面的经验或知道的替代品?我不知道这是否是我的目的正确的事情,我需要实现CRUDPUB/SUB

+1

Dnode和nowjs都做方法名交换。不只是使用socket.io,你有什么理由? – thejh

+0

我需要回答在socket.io中不太好的请求(发出新事件)。在nowjs中,你有一个很好的回调函数。 NowJS呢?不知道... – Eliasdx

回答

5

使用socket.io,它有客房可存储内存一个的Redis的Pub/Sub实施支持。 您也可以命名空间您的插座,并通过事件提供CRUD

var io = require('socket.io').listen(80); 

var someResource = io 
    .of('/someResource') 
    .on('create', function (socket) { 
    createSomeResource() 
    }) 
    .on('read', function(socket) { 
    readSomeResource(id, function(){ 
     io.sockets.in('roomBasedOnSessionId').emit('data', {my:'json'}) 
    }) 
    }) 

下面是一些你需要的主题,包括插座和会话共享引用一个伟大的演练http://www.danielbaulig.de/socket-ioexpress/

+1

是的,我现在使用socket.io。我发现socket.io确实支持回调/直接回答。它隐藏在“如何使用”中。 – Eliasdx