试图
了解更多关于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 的代码?