UNPKG

io-syncify

Version:

跨进程、跨服务器之间通信同步化

51 lines (45 loc) 1.53 kB
import {EventEmitter} from "events"; import * as IORedis from "ioredis"; import {Message} from "./Message"; import {OutputMessageReceiver} from "./OutputMessageReceiver"; /** * Redis输出消息接收器 */ export class RedisOutputMessageReceiver implements OutputMessageReceiver { /** * 事件发射器 */ eventEmitter: EventEmitter; /** * 输出消息订阅通道 */ output_message_sub_channel: string /** * 输出消息订阅客户端 */ output_message_sub_client: IORedis.Redis; /** * * @param {string} output_message_sub_channel * @param {IORedis.RedisOptions} options * @param {EventEmitter} emitter */ constructor(output_message_sub_channel: string, options: IORedis.RedisOptions, emitter: EventEmitter) { this.output_message_sub_channel = output_message_sub_channel; this.output_message_sub_client = new IORedis(options); this.eventEmitter = emitter; } /** * 接收消息 */ receive() { this.output_message_sub_client.subscribe(this.output_message_sub_channel).then(()=>{ // console.log('subscribe', this.output_message_sub_channel, 'success'); this.output_message_sub_client.on('message', async (channel, message) => { // console.log(Date.now(), 'receive output message', message); let msg = Message.fromJsonArrayString(message); this.eventEmitter.emit(msg.id, msg); }); }); } }