UNPKG

io-syncify

Version:

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

42 lines (37 loc) 1.32 kB
import * as IORedis from "ioredis"; import {InputMessageHandler, InputMessageReceiver} from "./InputMessageReceiver"; import {Message} from "./Message"; /** * Redis输入消息接收器 */ export class RedisInputMessageReceiver implements InputMessageReceiver { /** * 输入消息处理器 */ inputMessageHandler: InputMessageHandler; /** * 输入消息订阅通道 */ private readonly input_message_sub_channel: string; /** * 输入消息订阅客户端 */ private input_message_sub_client: IORedis.Redis; constructor(input_message_sub_channel: string, options: IORedis.RedisOptions, inputMessageHandler: InputMessageHandler) { this.inputMessageHandler = inputMessageHandler; this.input_message_sub_channel = input_message_sub_channel; this.input_message_sub_client = new IORedis(options); } /** * 接收消息 */ receive() { this.input_message_sub_client.subscribe(this.input_message_sub_channel).then(()=>{ this.input_message_sub_client.on('message', (channel, message) => { if (channel === this.input_message_sub_channel) { this.inputMessageHandler.handle(Message.fromJsonArrayString(message)); } }); }); } }