subscribe<T, R>(data: T, topic: string, namespace = '') {
const uniKey = namespace + topic
const source = this.webSocket.multiplex(
() => {
// 这个 subMsg 想要被定时重发
const subscribeData: Messages.Client.Subscribe<T> = {
data,
topic,
nsp: namespace,
cmd: COMMAND.MESSAGE_CMD_SUBSCRIBE,
}
return subscribeData
},
() => {
const unSubScribeData: Messages.Client.UnSubscribe = {
topic,
cmd: COMMAND.MESSAGE_CMD_UNSUBSCRIBE,
}
return unSubScribeData
},
(message) => {
if (message.cmd === COMMAND.MESSAGE_CMD_PUBLISH) {
const msg = message as Messages.Server.Subscribed<R>
const subKey = msg.nsp + msg.topic
return subKey === uniKey
}
return false
}
)
return source.subscribe()
}
在封装一个即时通讯业务 SDK ,需要实现一个 subscribe 订阅方法,发送到服务端的订阅消息需要被定时重发,用来实现消息的续订的效果(无法通过心跳等其他方式维系),也就是需要定时重发 multiplex 这边的 subMsg ,但不重生生成一个订阅源,请教一下应该如何实现?