萌新又遇到新的问题了,: - )

使用 play.player.setCustomProperties(props)方法设置玩家个人属性,

在ui层用 play.room.playerList 获取所有玩家的个人属性
(这个方法是自己摸索出来的,在教程里没看到,产品逻辑上有展示每个玩家自定义属性的需求,不知道是否有更好的方法。)

然后当我刷新界面的时候,触发自动重连:

play.on(Event.CONNECTED, () => {
  ...
  if (Cookies.get('old_room')) {
    play.rejoinRoom(Cookies.get('old_room'));        
  }
  ...
});

这时候,再次用 play.room.playerList 获取数据,空空如也,之前用 play.player.setCustomProperties(props) 设置的数据都不见了,其他玩家的自定义数据也获取不到了,

【我创建房间的时候,设置了 playerTtl 值】

疑问: play.room.playerList 这个值不是实时同步的吗?有能够实时同步获取到所有玩家所有自定义属性的方法吗?或者是其他环节有什么问题吗?

恳请L站各位老司机带带路。

play.room.playerList 和玩家属性是 SDK 负责同步的。

帖子中提到的「然后当我刷新界面的时候,触发自动重连」执行了什么操作呢?

刷新后页面登录态清空了,websocket断开了,需要重新链接,
我用cookie 存了之前的房间名,用rejoinRoom方法重新加入原先房间:

// 注册连接成功事件
play.on(Event.CONNECTED, () => {
  this.setState({
    signIn: true
  })
  if (Cookies.get('old_room')) {
    play.rejoinRoom(Cookies.get('old_room'));        
  }
});

然后触发加入房间事件:

// 注册加入房间成功事件
play.on(Event.ROOM_JOINED, () => {

  Cookies.set("old_room",play.room.name, { expires: 0.1 })
  let props = play.room.getCustomProperties()

  this.setState({
    gameData: props,
    roomIn : true,
    playerList : play.room.playerList
  })

  let pls = play.room.playerList.map((i)=>{
    return i.getCustomProperties()
  })

  console.log("p_1",play.room.playerList)
  console.log("p_2",pls)

});

上述代码最后两种方式打印出来的数据,均没有同步之前的玩家自定义数据。
我现在不清楚为什么play对象没有同步play.room.playerList数据?

rejoin 是相对于「玩家掉线后的操作」。

玩家在创建房间时,可以设置 playerTtl,这个值表示「玩家掉线后在房间中保留数据的时间」,超过这个时间,则清空玩家数据;默认这个值是 0,即掉线后清空玩家数据。

我需要知道你的具体场景,比如这个房间是谁创建的,你认为出问题的玩家是房主还是普通玩家,以及你预期的结果。

昨天更新了一下sdk包,问题解决了,之前用的版本是 v0.13.4 ; 后来更新到 v0.13.24 数据同步的问题就自动解决了。看来可能是之前老版本的bug被你们修复了。

想问下,你们@leancloud/play 有固定更新时间吗?版本更新有文档说明吗?

没有固定时间更新,一般根据测试和玩家反馈修复 bug,或迭代开发。
版本更新在 github 的 releases 中有文档说明。