Tengo este código en Python:
import zlib raw = bytes.fromhex("789C34C9410AC2301005D0BBFC752289A88BB94A53CAD8061B48D3329D2A1A7277DDB87BF02A14548E9C0DF63FD60DE49DC104AA98238BDE23EB908A467972065DFCF9FAFB4185C708EAD0053C58E38BDF7693C92E9C8A9DFDE716606AC0924659F7007227D77AF4AD7D010000FFFF") buffer = bytearray() inflator = zlib.decompressobj() buffer.extend(raw) msg = inflator.decompress(buffer) print("[buffer] ", msg)Resultado:
[búfer] b'{"t":null,"s":null,"op":10,"d":{"heartbeat_interval":41250,"_trace":["[\"gateway-prd-main- h1z6\",{\"micros\":0.0}]"]}}'
Esos datos podrían descomprimirse con éxito en Python.
Luego tengo un código similar en javascript (mecanografiado):
import zlib from "zlib" const raw = "789C34C9410AC2301005D0BBFC752289A88BB94A53CAD8061B48D3329D2A1A7277DDB87BF02A14548E9C0DF63FD60DE49DC104AA98238BDE23EB908A467972065DFCF9FAFB4185C708EAD0053C58E38BDF7693C92E9C8A9DFDE716606AC0924659F7007227D77AF4AD7D010000FFFF"; let msg; let buffer; buffer = Buffer.from(raw, "hex"); msg = zlib.inflateSync(buffer); console.log("[buffer] " + msg.toString("utf-8"));Resultado:
Error: final inesperado del archivo
en Zlib.zlibOnError [como onerror] (node:zlib:190:17)
en processChunkSync (nodo:zlib:456:12)
en zlibBufferSync (nodo:zlib:178:12)
en Object.syncBufferWrapper [como inflateSync] (nodo:zlib:791:14)
en Objeto.
en Module._compile (nodo:internal/modules/cjs/loader:1101:14)
en Module.m._compile (C:\Users\hanziKR Developer\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:1455:23)
en Module._extensions..js (nodo:internal/modules/cjs/loader:1153:10)
en Object.require.extensions. [como .ts]
en Módulo.cargar (nodo:interno/módulos/cjs/cargador:981:32) {
error: -5,
código: 'Z_BUF_ERROR'
}
Ahí tiene un error. ¿Por qué hay un error en uno, pero no en el otro?
Porque su código Python está ignorando el error. En ambos casos, su transmisión zlib finaliza prematuramente.