2

以下は、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);
});

ありがとう!

4

1 に答える 1

0

Redisはデータエンコーディングに関して不可知論者です。データがバイナリであるかテキストであるかは関係なく、この情報をクライアントに返したり転送したりすることはできません。

この問題を処理する古典的な方法は、メタ情報(数バイト)を含むヘッダーをペイロードに追加することだと思います。たとえば、データ型、ペイロードが圧縮されているかどうかを知るためのインジケーターなどを保存することもできます...

于 2012-10-10T08:01:17.420 に答える