Skip to content

Commit d301439

Browse files
authored
T-8088 Add gzip compression to node and edge sync functions (#139)
1 parent cf1f1bf commit d301439

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

packages/edge/src/edge.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,20 @@ export class Edge extends Base {
2323

2424
// Sync function
2525
const sync = async (logs: ILogtailLog[]): Promise<ILogtailLog[]> => {
26+
// Compress the data using CompressionStream
27+
const compressedData = await new Response(
28+
new Blob([this.encodeAsMsgpack(logs)]).stream().pipeThrough(new CompressionStream("gzip")),
29+
).arrayBuffer();
30+
2631
const res = await fetch(this._options.endpoint, {
2732
method: "POST",
2833
headers: {
2934
"Content-Type": "application/msgpack",
35+
"Content-Encoding": "gzip",
3036
Authorization: `Bearer ${this._sourceToken}`,
3137
"User-Agent": "logtail-js(edge)",
3238
},
33-
body: this.encodeAsMsgpack(logs),
39+
body: compressedData,
3440
});
3541

3642
if (res.ok) {

packages/node/src/node.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Duplex, Writable } from "stream";
2-
32
import { encode } from "@msgpack/msgpack";
43
import http from "node:http";
54
import https from "node:https";
5+
import zlib from "node:zlib";
66

77
import { Context, ILogLevel, ILogtailLog, ILogtailNodeOptions, LogLevel, StackContextHint } from "@logtail/types";
88
import { Base } from "@logtail/core";
@@ -27,6 +27,7 @@ export class Node extends Base {
2727
method: "POST",
2828
headers: {
2929
"Content-Type": "application/msgpack",
30+
"Content-Encoding": "gzip",
3031
Authorization: `Bearer ${this._sourceToken}`,
3132
"User-Agent": "logtail-js(node)",
3233
},
@@ -36,8 +37,16 @@ export class Node extends Base {
3637
const response: http.IncomingMessage = await new Promise((resolve, reject) => {
3738
request.on("response", resolve);
3839
request.on("error", reject);
39-
request.write(this.encodeAsMsgpack(logs));
40-
request.end();
40+
41+
// Compress the logs using gzip
42+
zlib.gzip(this.encodeAsMsgpack(logs), (err, compressedData) => {
43+
if (err) {
44+
reject(err);
45+
return;
46+
}
47+
request.write(compressedData);
48+
request.end();
49+
});
4150
});
4251

4352
if (response.statusCode && response.statusCode >= 200 && response.statusCode < 300) {

0 commit comments

Comments
 (0)