jinaga
Version:
Data management for web and mobile applications.
38 lines • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ControlFrameHandler = void 0;
class ControlFrameHandler {
constructor(onBookmark, onErrorMessage) {
this.onBookmark = onBookmark;
this.onErrorMessage = onErrorMessage;
}
handle(frame) {
const { keyword, payload } = frame;
if (keyword === "BOOK") {
if (payload.length !== 2) {
throw new Error(`Invalid BOOK frame payload length: ${payload.length}`);
}
const feed = JSON.parse(payload[0]);
const bookmark = JSON.parse(payload[1]);
this.onBookmark(feed, bookmark);
return;
}
if (keyword === "ERR") {
if (payload.length !== 2) {
throw new Error(`Invalid ERR frame payload length: ${payload.length}`);
}
const feed = JSON.parse(payload[0]);
const message = JSON.parse(payload[1]);
this.onErrorMessage(feed, message);
return;
}
if (keyword === "ACK") {
// ACK confirms subscription is active, payload contains feed
// Currently no action needed, but could be used for tracking
return;
}
// Ignore SUB/UNSUB sent from server (defensive)
}
}
exports.ControlFrameHandler = ControlFrameHandler;
//# sourceMappingURL=control-frame-handler.js.map