使用节点流从 Cassandra 二进制协议获取响应


试图

了解更多关于streams和cassandra的信息,所以我想我会尝试二进制协议。我什至无法让它回应。

var net = require('net');
var util = require('util');
var stream = require('stream');
var session;
session = net.connect({ port: 9160 }, function () {
  console.log('connected');
  var header = new Buffer([ 0x01, 0x00, 0x01, 0x01 ]);
  var length = new Buffer(4);
  var body = new Buffer("{'CQL_VERSION':'3.0.0'}", 'utf8');
  length.writeUInt32BE(body.length, 0);
  session.write(header);
  session.write(length);
  session.write(body);
  setTimeout(function () { session.end(); }, 5000);
});
session.on('error', function (err) {
  console.log(err);
});
var client = new (stream.Writable);
client._write = function (chunk, _, next) {
  console.log('response received');
  next();
};
session.pipe(client);

程序运行 5 秒,打印几乎立即"连接",但可写流永远不会从数据库中接收内容。任何帮助将不胜感激!


我正在研究二进制协议的本文档和节点流指南。

Cassandra 正在运行,版本 2.0.5

9160 是 Thrift 的端口。您是否尝试过使用端口 9042 的代码?

相关内容

  • 没有找到相关文章

最新更新