V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
akulamatata
V2EX  ›  问与答

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

  •  
  •   akulamatata · 2022-11-05 11:42:29 +08:00 · 383 次点击
    这是一个创建于 562 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 ,但不重生生成一个订阅源,请教一下应该如何实现?

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5403 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:18 · PVG 10:18 · LAX 19:18 · JFK 22:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.