公司搞前后端分离后端原来是用java写的服务通信是用node dubbo,现在想用node做前后端分离, 网上找了很多node dubbo 的 var zookeeper = require(‘node-zookeeper-client’);
var client = zookeeper.createClient(‘192.168.16.244:2181’); var path = ‘/com.szy.hms.openservice.facade.IMySchoolFacade’;
function getData(client, path) { client.getData( path, function (event) { console.log(‘Got event: %s’, event); getData(client, path); }, function (error, data, stat) { if (error) { console.log(‘Error occurred when getting data: %s.’, error); return; }
console.log(
'Node: %s has data: %s, version: %d',
path,
data ? data.toString() : undefined,
stat.version
);
}
); }
client.once(‘connected’, function () { console.log(‘Connected to ZooKeeper.’); getData(client, path); });
client.connect();
最后都是 Connected to ZooKeeper. Node: /com.szy.hms.openservice.facade.IMySchoolFacade has data: undefined, version: 0
前后端分离的Node中间层不建议直接读取底层方法。底层应该服务化,你想想底层万一变成PHP了怎么办?所有应该是用http请求的方式去跟底层通信。
表达有点乱,标题似乎与内容并没什么关系; 代码段仅仅是zookeeper方面发现节点数据的demo,并无任何node与java dubbo通信的关系; 我想你需要的是node-zookeeper-dubbo这个模块
@younth 主要是想能通信速度快些
@mosaic101 楼上说的对就是用的这个模块但是和java没有通信成功,好像和zookeeper有通信成功.
@taove 普通的http请求确实会损耗,我们这边是基于通过同机房访问,基本上不用担心请求的耗时问题。
@younth 难到还有其它的http 大神你支支招吧
html+nginx+java
跟dubbo通信的部分使用的原生的java 之后把node跑在JVM上就行了 这是现在最万能的解决方案
我们正在开发适用于egg的dubbo 插件 https://github.com/eggjs/egg/issues/153 自豪地采用 CNodeJS ionic
@taove 方便说下你这边没有和java通信成功 有什么报错日志么
@p412726700 { NO_NODE: Exception: NO_NODE[-101] at ConnectionManager.onSocketData (/Users/taowei/Desktop/nodedemo/node_modules/node-zookeeper-client/lib/ConnectionManager.js:570:35) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:176:18) at Socket.Readable.push (_stream_readable.js:134:10) at TCP.onread (net.js:548:20) code: -101, name: ‘NO_NODE’, path: undefined, message: ‘Exception: NO_NODE[-101]’ }
@fengmk2 好我看看大神推荐必须是精品