请教如何定时重发 rxjs 的 webSocket multiplex 的 subMsg

2022 年 11 月 5 日
 akulamatata
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 ,但不重生生成一个订阅源,请教一下应该如何实现?

813 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/892866

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX