V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
akulamatata
V2EX  ›  问与答

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

  •  
  •   akulamatata · Nov 5, 2022 · 746 views
    This topic created in 1283 days ago, the information mentioned may be changed or developed.
    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 ,但不重生生成一个订阅源,请教一下应该如何实现?

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2572 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:07 · PVG 00:07 · LAX 09:07 · JFK 12:07
    ♥ Do have faith in what you're doing.