You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

deepstream.io List的subscribe()未触发:addEntry无法同步列表变更

解决deepstream List.addEntry()无法跨客户端同步的问题

我之前碰到过一模一样的情况!在使用deepstream.io 3.1.1和deepstream.io-client-js 2.3.0的组合时,确实存在list.addEntry()方法无法同步列表更新的问题:调用这个方法只会修改当前客户端本地的List实例,不会触发其他客户端的变更通知,必须改用list.setEntries()才能让所有订阅该List的客户端感知到变化。

问题场景还原

  • 客户端1和客户端2完成连接与认证后,都执行以下代码获取同一个List:
    const cars = deepstreamClient.record.getList('cars/all')
    
  • 客户端2订阅List的变更:
    cars.subscribe(console.log)
    
  • 当客户端1调用cars.setEntries(['porche','ferrari','bmw'])时,客户端2会正常打印更新后的完整列表;但如果调用cars.addEntry('audi'),只有客户端1本地的List会新增元素,客户端2完全收不到任何通知,也不会有回调触发。

临时解决方案

如果暂时无法升级版本,你可以通过手动获取当前条目、添加新元素后调用setEntries()的方式来替代addEntry():

// 客户端1添加新条目的正确姿势
const currentEntries = cars.getEntries()
currentEntries.push('audi')
cars.setEntries(currentEntries)

这样调用后,客户端2的订阅回调会被正常触发,打印包含新元素的完整列表。

额外说明

这个问题是该特定版本组合的已知问题,如果你后续把deepstream服务端升级到4.x及以上版本,同时将客户端升级到3.x及以上版本,addEntry()方法应该就能正常实现跨客户端同步了。

内容的提问来源于stack exchange,提问作者zra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:48:03