下面是一段在node.js中实现redis pubsub的代码。我在读取一个文件和一个纯文本后发布了一个二进制数据,有没有办法识别消息接收到的缓冲区是二进制还是文本?
var redis = require("redis"),
pub = redis.createClient(null, null, {
detect_buffers: true
}),
sub = redis.createClient(null, null, {
detect_buffers: true
}),
fs = require("fs");
sub.subscribe("abc");
sub.on("subscribe", function(channel, count) {
fs.readFile("IMG_2693.JPG", function(err, data) {
pub.publish("abc", data);
});
pub.publish("abc", "hello");
});
sub.on("message", function(channel, data) {
// Can I identify if it is binary data or text?
console.dir(data);
});
谢谢!
最佳答案
Redis 与数据编码无关。它不关心数据是二进制还是文本,并且不能将此信息返回或转发给客户端。
我认为处理此问题的经典方法是向包含元信息(几个字节)的负载添加 header 。例如,您还可以存储数据类型、了解有效载荷是否被压缩的指示符等......
关于node.js - 在 node.js 中,如何识别缓冲区是二进制还是文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808508/