sdg
Version:
pomelo ts
68 lines • 5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const events_1 = require("events");
const constants = tslib_1.__importStar(require("../../util/constants"));
const { INIT, CLOSED } = constants.STATE;
class SioSocket extends events_1.EventEmitter {
constructor(id, socket) {
super();
this.sendRaw = this.send;
this.id = id;
this.socket = socket;
this.ip = this.getClientIp();
this.state = INIT;
this.initEvent();
}
initEvent() {
this.socket.on('disconnect', this.emit.bind(this, 'disconnect'));
this.socket.on('error', this.emit.bind(this, 'error'));
this.socket.on('message', (...arg) => {
this.emit('message', ...arg);
});
}
send(msg) {
if (this.state !== INIT)
return;
// if(typeof msg !== 'string') {
// msg = JSON.stringify(msg);
// }
this.socket.send(msg);
}
;
disconnect() {
if (this.state === CLOSED)
return;
this.state = CLOSED;
this.socket.disconnect();
}
;
sendBatch(msg) {
// @ts-ignore
this.send(this.encodeBatch(msg));
}
;
getClientIp() {
let ip = this.socket.handshake.headers['x-forwarded-for'] || this.socket.handshake.address;
// 经由高防/代理服务器时,格式为 真实ip,代理服务器1的ip,....,代理服务器n的ip
if (ip.indexOf(',') > -1) {
return ip.split(',')[0];
}
if (ip.indexOf(':') > -1) {
const ipp = ip.split(':');
ip = ipp[ipp.length - 1];
return ip.split(':').pop();
}
return ip;
}
encodeBatch(msgs) {
let res = '[';
res += msgs.map(msg => typeof msg === 'string' ? msg : JSON.stringify(msg)).join(',');
res += ']';
return res;
}
;
}
exports.default = SioSocket;
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvc29ja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nvbm5lY3RvcnMvc2lvL3Npb3NvY2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtQ0FBc0M7QUFFdEMsd0VBQWtEO0FBSWxELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUV6QyxNQUFxQixTQUFVLFNBQVEscUJBQVk7SUFRakQsWUFBWSxFQUFPLEVBQUUsTUFBaUI7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFIVixZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUtsQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLElBQUksQ0FBQyxHQUFrQjtRQUM1QixJQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUFFLE9BQU87UUFFL0IsZ0NBQWdDO1FBQzlCLDZCQUE2QjtRQUMvQixJQUFJO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUFBLENBQUM7SUFFSyxVQUFVO1FBQ2YsSUFBRyxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU07WUFBRSxPQUFPO1FBRWpDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUFBLENBQUM7SUFFSyxTQUFTLENBQUMsR0FBb0I7UUFDbkMsYUFBYTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQSxDQUFDO0lBRU0sV0FBVztRQUNqQixJQUFJLEVBQUUsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDbkcsZ0RBQWdEO1FBQ2hELElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN4QixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDeEI7UUFFRCxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBWSxDQUFDO1NBQ3RDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQXFCO1FBQ3ZDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEYsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNYLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUFBLENBQUM7Q0FDSDtBQXZFRCw0QkF1RUM7QUFBQSxDQUFDIn0=