send(packet) { if (!packet.id) { packet.id = shortid.generate(); } packet.version = this.options.version || 2; const data = sjmp.serialize(packet); if (!data) { return Promise.reject(new Error('bad_packet')); } if (this.state !== keys.CLIENT_STATE_CONNECTED) { return new Promise((resolve, reject) => { this.stats.offline_sent++; this.pending.push({ data: data, callbacks: { resolve: resolve, reject: reject }}); }); } return new Promise((resolve, reject) => { if (this._onfly(data, { resolve: resolve, reject: reject })) { return; } this.socket.write(JSON.stringify(data)); this.stats.sent++; this.callbacks.set(packet.id, { resource: packet.resource, callbacks: [{ resolve: resolve, reject: reject }] }); }); }
send(packet) { if (!this.isReady()) { throw new Error('client not ready'); } if (!packet.id) { packet.id = shortid.generate(); } if (this._sockjs.send(sjmp.serialize(packet, true))) { this.emit('sent', packet); } }