막연한 질문에 대해 사과드립니다.하지만 문제가 무엇인지 잘 모르겠습니다. JSON 데이터를 웹 응용 프로그램에 제공하는 데 사용하는 노드 http 서버가 있습니다. 그것은 잘 작동하지만 JSON 문자열이 커지기 시작 (10-12 MB)하므로 zlib로 압축을 추가하고 싶습니다.Node.JS 압축 된 HTTP 서버 - 응답으로 변수를 보내십시오.
JSON 데이터가 문자열 변수이며 압축하여 응답 객체에 쓰고 싶지만 클라이언트에 돌아가는 결과는 항상 완벽한 헤더와 내용이없는 것처럼 보입니다. 여기 내 deliverResponse 기능입니다 : ZLIB 사용 스트림 파이프 기능
var deliverResult = function (data, response, callback, acceptEncoding){
var payload = callback + '(' + JSON.stringify(data) + ');';
if (acceptEncoding.match(/\bdeflate\b/)) {
response.writeHead(200, { 'Content-Encoding': 'deflate', 'Content-Type': 'text/javascript; charset=UTF-8' });
zlib.deflate(payload, function(err, result){
if(!err){
//console.log(result.toString('utf8')); // I have data on the console here
response.write(result.toString('utf8')); // No data sent here
}
});
} else if (acceptEncoding.match(/\bgzip\b/)) {
response.writeHead(200, { 'Content-Encoding': 'gzip', 'Content-Type': 'text/javascript; charset=UTF-8' });
zlib.gzip(payload, function(err, result){
if(!err){
response.write(result.toString('utf8'));
}
});
} else {
writelog('INFO', 'Returning data without compression\n');
response.writeHead(200, { 'Content-Type': 'text/javascript; charset=UTF-8' });
response.write(payload);
}
response.end();
}
HTTP 서버 예,하지만 난 데이터베이스 응용 프로그램에서 JSON 데이터를 생성로서 나는 파일을 전송하고 있지 않다, 그래서 나는 편의 방법 예제를 기반으로합니다. 내 문제 해결 지금까지는 응답 객체가 좋음을 알고 result.toString ('utf8')은 gobeldy-gook을 예상대로 출력합니다. 서버에 acccept 인코딩 헤더를 보내지 않으면 일반 텍스트가 완벽하게 전송되므로 압축 기능이 있어야합니다.
누구든지 이에 대해 알 수 있습니까? 스트림, 파이프, 버퍼 및 zlib 객체에 대한 이해가 부족하다는 점에 대해서는 거의 확신하지 못했습니다. 아마도 구문 문제 일 뿐이므로 희망을 갖고이 모든 것을 이해하는 사람이 나를 도울 수 있습니다.
건배
해결
JSON이 다운로드 용인 것으로 가정합니다. 브라우저를 질식 시키십시오 :) –
아니요, 실시간 매핑 응용 프로그램의 위치 데이터입니다. 대부분의 브라우저에는 문제가 없습니다. – whiteatom