Closed molin7596 closed 4 months ago
你的示例是正确的,这是获取游戏对外服的数据与扩展 (yuque.com)的正确方式。
好的,谢谢, 但是我想了解的是 :“有方法获取所有的活跃用户吗?”,这样获取只有当前对外服的
ResponseCollectExternalMessage 收集的是各游戏对外服中获取的数据。
action 示例中触发 OnlineUserExternalBizRegion 相关逻辑。
@ActionController(ExternalBizRegionCmd.cmd)
public class ExternalBizRegionAction {
... ...省略部分代码
@ActionMethod(ExternalBizRegionCmd.listOnlineUser)
public List<Long> listOnlineUser(FlowContext flowContext) {
// 访问玩家所在的【游戏对外服】
ResponseCollectExternalMessage collectExternalMessage = flowContext
.invokeExternalModuleCollectMessage(MyExternalBizCode.onlineUser);
return listUserId(collectExternalMessage);
}
@ActionMethod(ExternalBizRegionCmd.listOnlineUserAll)
public List<Long> listOnlineUserAll(FlowContext flowContext) {
// 访问多个【游戏对外服】
var request = new RequestCollectExternalMessage()
.setBizCode(MyExternalBizCode.onlineUser);
ResponseCollectExternalMessage collectExternalMessage = flowContext
.invokeExternalModuleCollectMessage(request);
return listUserId(collectExternalMessage);
}
private static List<Long> listUserId(ResponseCollectExternalMessage collectExternalMessage) {
List<Long> userIdList = new ArrayList<>();
// 打印从各游戏对外服中获取的数据
for (ResponseCollectExternalItemMessage itemMessage : collectExternalMessage.getMessageList()) {
// OnlineUserExternalBizRegion 所返回的数据
OnlineUser onlineUser = itemMessage.getData();
List<Long> userIds = onlineUser.getUserIds();
log.info("userIds : {}", userIds);
userIdList.addAll(userIds);
}
return userIdList;
}
}
可尝试运行相关示例 获取游戏对外服的数据与扩展 (yuque.com)
好的
这样获取是只获取到绑定到这个对外服的用户吗?有其他方法获取所有活跃用户吗?