node与java通信 java端是dubbo
发布于 6 年前 作者 taove 5547 次浏览 来自 问答

公司搞前后端分离后端原来是用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

12 回复

前后端分离的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 好我看看大神推荐必须是精品

回到顶部