【问题标题】:In node.js, how do I identify if a buffer is binary or text?在 node.js 中,如何识别缓冲区是二进制还是文本?
【发布时间】:2012-10-09 21:12:58
【问题描述】:

下面是 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);
});

谢谢!

【问题讨论】:

标签: node.js redis


【解决方案1】:

Redis 与数据编码无关。它不关心数据是二进制还是文本,并且不能将这些信息返回或转发给客户端。

我认为处理此问题的经典方法是在您的有效负载中添加一个包含元信息(几个字节)的标头。例如,您还可以存储数据类型、知道负载是否被压缩的指示器等...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 2012-05-08
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多