decentralised message store
1import type { RawData } from "ws";
2
3export const wsSyncHandler = (
4 data: RawData,
5 handler: (jsonData: unknown) => void,
6) => {
7 const jsonText = rawDataToString(data);
8 const jsonData: unknown = JSON.parse(jsonText);
9 try {
10 handler(jsonData);
11 } catch (err: unknown) {
12 console.error(
13 `Something went wrong while executing the WebSocket handler ${handler.name}`,
14 );
15 console.error(err);
16 }
17};
18
19export const rawDataToString = (data: RawData): string => {
20 if (Buffer.isBuffer(data)) {
21 return data.toString("utf-8");
22 }
23 if (Array.isArray(data)) {
24 return Buffer.concat(data).toString("utf-8");
25 }
26 return new TextDecoder().decode(data);
27};