io-syncify
Version:
跨进程、跨服务器之间通信同步化
42 lines (37 loc) • 1.32 kB
text/typescript
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));
}
});
});
}
}