2011-11-09 104 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