2012-10-09 1 views
1

아래는 node.js의 redis pubsub 코드입니다. 파일과 일반 텍스트를 읽은 후 바이너리 데이터를 게시합니다. 메시지에서받은 버퍼가 바이너리 또는 텍스트인지 식별하는 방법이 있습니까?node.js에서 버퍼가 바이너리 또는 텍스트인지 식별하는 방법은 무엇입니까?

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); 
}); 

고마워요!

+0

이 정보는 도움이 될 수 있습니다. http://stackoverflow.com/questions/10225399/check-if-a -file-is-binary-or-ascii-with-node-js – vinayr

답변

0

Redis는 데이터 인코딩과 관련되지 않습니다. 데이터가 2 진 또는 텍스트인지는 중요하지 않으며이 정보를 클라이언트로 리턴 또는 전달할 수 없습니다.

이 문제를 처리하는 고전적인 방법은 메타 정보 (몇 바이트)를 포함하는 페이로드에 헤더를 추가하는 것입니다. 예를 들어, 페이로드가 압축되었는지 여부를 알 수있는 표시기 인 데이터 유형을 저장할 수도 있습니다.

관련 문제