@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
49 lines (38 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dataStreamFromSocket = void 0;
var _rxjs = require("rxjs");
var _os = require("os");
var _time = require("../time");
var _wsCodeToReason = require("./wsCodeToReason");
var _logging = require("../logging");
const dataStreamFromSocket = (client, logger = _logging.defaultLogger) => {
return new _rxjs.Observable(subscriber => {
const messageHandler = data => {
subscriber.next(data);
};
const errorHandler = error => {
logger.error('💥 Error on client socket', error);
subscriber.error(error);
};
const closeHandler = (code, reason) => {
const from = !client.closingByKit ? 'from client side' : 'from our side';
logger.log(`${_os.EOL}👋 Connection closed ${from}, with code ${code}; ${reason || (0, _wsCodeToReason.wsCodeToReason)(code)}`, {
timestamp: (0, _time.localNow)()
}, _os.EOL);
subscriber.complete();
};
client.on('message', messageHandler);
client.on('error', errorHandler);
client.on('close', closeHandler);
return () => {
client.off('message', messageHandler);
client.off('error', errorHandler);
client.off('close', closeHandler);
};
});
};
exports.dataStreamFromSocket = dataStreamFromSocket;
//# sourceMappingURL=dataStreamFromSocket.js.map