TCP-сокет + socket.io двунаправленный (JSON-) RPC: dnode? - PullRequest
2 голосов
/ 10 ноября 2011

Я ищу способ реализации двунаправленного RPC в node.js (это означает, что и клиент, и сервер предоставляют удаленно вызываемые процедуры, предпочтительно такие, как json-rpc). Его следует использовать поверх сокетов socket.io и TCP / IP для клиентов. Я собирался использовать nowjs для веб-сокетов и предоставить отдельный API для «обычных» сокетов.

Теперь я только что нашел dnode , который утверждает, что работает с обоими. «Он работает через сетевые сокеты и даже в браузере с socket.io.»

Мне нужно передать объекты JSON (содержащие строки) друг другу. Клиенты будут написаны на JavaScript (браузер), JavaScript (Appcelerator Titanium), C # и, возможно, Java (Android), но есть только реализация для Java , Я прочитал протокол и думаю, что это не так просто реализовать.

Кроме того, после установления соединения происходит обмен именами методов, что может привести к дополнительным затратам в моем приложении, мне это не нужно, поскольку я знаю, что я реализовал на другой стороне (это не общедоступный API).

Кто-то имеет опыт работы с этим или знает альтернативы? Я не уверен, подходит ли это для моих целей, мне нужно реализовать CRUD и PUB / SUB .

1 Ответ

5 голосов
/ 14 ноября 2011

Используйте 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/

...