Apollo GraphQL 退订似乎被打破了

Apollo GraphQL unsubscribe seems to be broken

我们在 node.js 后端和 React 前端中使用带有订阅(通过 websockets)的 Apollo GraphQL。 该应用程序提供设备列表。当用户点击一台设备时,他会通过实时更新(来自订阅)获得设备的监控数据。当用户点击另一个设备时,订阅停止,下一个设备的数据正在加载和订阅。

我在下面粘贴了来自 websocket 连接的消息。我首先尝试在这里粘贴原始日志,但屏幕截图更容易阅读。

请忽略ID 1-5。对我的问题来说重要的是 id 6 和 7。当单击第一个设备时(在 11:15:35)创建 id,然后详细信息关闭,因此订阅停止(在 11:15:36)。现在,用户单击另一个设备并开始订阅 7。几秒钟后,系统会为第 6 个和第 7 个订阅推送数据。

有什么我可以做的 "stop" 实际上意味着 "stop" 还是这是一个错误?

编辑:根据要求,这是我用来 subscribe/unsubscribe 的代码(由于公司规定,我不得不删减一些部分)

    const subscription = useRef(null)
    const { loading, data, error, subscribeToMore } = useQuery(getDevice, { variables: { deviceId } })
    useEffect(() => {
        return () => {
            if (!subscription.current) return
            subscription.current()
            subscription.current = null
        }
    }, [deviceId])
    if (!subscription.current) {
        subscription.current = subscribeToMore({
            document: geDeviceSubscription,
            variables: {
                deviceId
            },
            updateQuery: (prev, { subscriptionData }) => ({ device: subscriptionData.data.subscribeDevice })
        })
    }

编辑 2:这肯定不是我的客户问题,因为如果使用 GraphiQL gui,开始订阅并再次停止它也会发生。新数据未显示,但在浏览器网络选项卡的 websocket 连接中可见 (chrome)。

这似乎是较旧的 apollo graphql 或 nestjs-apollo-graphql 版本(我们在后端使用这些框架)中的错误。将所有后端依赖项升级到 "latest" 后,错误似乎并没有持续存在。