Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在node.js中,如何识别缓冲区是二进制还是文本?_Node.js_Redis - Fatal编程技术网

在node.js中,如何识别缓冲区是二进制还是文本?

在node.js中,如何识别缓冲区是二进制还是文本?,node.js,redis,Node.js,Redis,下面是node.js中redis pubsub的代码。我在读取了一个文件和一个纯文本后发布了一个二进制数据,有没有办法确定消息上接收到的缓冲区是二进制还是文本 var redis = require("redis"), pub = redis.createClient(null, null, { detect_buffers: true }), sub = redis.createClient(null, null, { detect_bu

下面是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对于数据编码是不可知的。它不关心数据是二进制还是文本,并且无法将此信息返回或转发给客户端


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

Redis对于数据编码是不可知的。它不关心数据是二进制还是文本,并且无法将此信息返回或转发给客户端

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

这可能会有帮助这可能会有帮助