К
Тобто з допомогою балансування навантаження, кластеризації з допомогою процесів і потоків і т. д.
Size: a a a
К
AK
ES
V
А
import zlib from 'zlib';
import { promisify } from 'util';
import toArray from 'stream-to-array';
import * as express from 'express';
import { Middleware, ExpressMiddlewareInterface } from 'routing-controllers';
@Middleware({ type: 'before' })
export class GzipMiddleware implements ExpressMiddlewareInterface {
public async use(
req: express.Request,
res: express.Response,
next: express.NextFunction
) {
if (req.headers['content-type'] === 'application/gzip') {
toArray(req)
.then(parts => {
const buf = Buffer.concat(parts);
return promisify(zlib.gunzip)(buf);
})
.then(decompressedMessage => {
req.body = (decompressedMessage as Buffer).toJSON();
next();
})
.catch(err => {
console.error(err);
next(err);
});
}
}
}
Error: unexpected end of file\n at Gunzip.zlibOnError (zlib.js:153:15). Алгоритм сжатия DEFLATE, это точно(третий байт 0x08). Пробовал использовать метод inflate, но получил ошибку, мол не получилось прочитать заголовок. Возможно кто-то знает что можно сделать, или сталкивался с такой же ошибкой, буду очень благодарен за помошь
DB
☆
TS
YO
АП
YO
☆
V
☆
☆
V
☆
V
А
import zlib from 'zlib';
import { promisify } from 'util';
import toArray from 'stream-to-array';
import * as express from 'express';
import { Middleware, ExpressMiddlewareInterface } from 'routing-controllers';
@Middleware({ type: 'before' })
export class GzipMiddleware implements ExpressMiddlewareInterface {
public async use(
req: express.Request,
res: express.Response,
next: express.NextFunction
) {
if (req.headers['content-type'] === 'application/gzip') {
toArray(req)
.then(parts => {
const buf = Buffer.concat(parts);
return promisify(zlib.gunzip)(buf);
})
.then(decompressedMessage => {
req.body = (decompressedMessage as Buffer).toJSON();
next();
})
.catch(err => {
console.error(err);
next(err);
});
}
}
}
Error: unexpected end of file\n at Gunzip.zlibOnError (zlib.js:153:15). Алгоритм сжатия DEFLATE, это точно(третий байт 0x08). Пробовал использовать метод inflate, но получил ошибку, мол не получилось прочитать заголовок. Возможно кто-то знает что можно сделать, или сталкивался с такой же ошибкой, буду очень благодарен за помошь
import zlib from 'zlib';Использовал
import { Readable } from 'stream';
import concatStream from 'concat-stream';
export class GzipHelper {
public decompress<T>(stream: Readable): Promise<T> {
return new Promise((resolve, reject) => {
stream
.pipe(zlib.createGunzip())
.on('error', reject)
.pipe(
concatStream((buf: Buffer) => {
try {
resolve(JSON.parse(buf.toString()));
} catch (error) {
reject(error);
}
})
);
});
}
}
transform streamвместо буфера. В итоге всё равно буферизирую с помощью
concat-stream, но теперь в буфере декомпрессированные данные и ошибки никакой нету. Если кто-то знает точно в чём проблема была в прошлом примере, буду благодарен, если просветите)
☆