Closed dongnanxibei2023 closed 1 year ago
如果已经设置了值, 后续想修改UserIdSettingKit.settingUserId中的userId值,正确的操作应该怎样做呢?
目前使用ExternalCommunicationKit.forcedOffline(temporaryUserId);断开之前的连接再自动连接会报错
UserIdSettingKit.settingUserId 可以重复使用, settingUserId 在本质上只是为了给用户的长连接添加一个唯一标记。
如果已经设置了值, 后续想修改UserIdSettingKit.settingUserId中的userId值,正确的操作应该怎样做呢? 目前使用ExternalCommunicationKit.forcedOffline(temporaryUserId);断开之前的连接再自动连接会报错
UserIdSettingKit.settingUserId 可以重复使用, settingUserId 在本质上只是为了给用户的长连接添加一个唯一标记。
说错了,后续的不能覆盖之前的,也不能重复使用。
因为在 SettingUserIdMessageExternalProcessor 中做了限制。
请问可以修改一下这个设置吗?
如果需要给用户添加一个默认的试玩游戏账号,再由客户自行注册账号进行游戏。 目前这样只能有两个替代方案, 1.登陆后由客户端断开websocket连接再连接 2.不使用UserIdSettingKit.settingUserId,使用token替代。 但是感觉都不太优雅。
或者作者有没有好的建议呢?
请问可以修改一下这个设置吗?
如果需要给用户添加一个默认的试玩游戏账号,再由客户自行注册账号进行游戏。 目前这样只能有两个替代方案, 1.登陆后由客户端断开websocket连接再连接 2.不使用UserIdSettingKit.settingUserId,使用token替代。 但是感觉都不太优雅。
或者作者有没有好的建议呢?
这是可扩展的。
遇到同样的问题。比如有多个角色做选择的情况下,想使用角色ID来做绑定设置,而不是userId。想不到好的方法优雅的解决这个问题。UserIdSettingKit.settingUserId这个方法的使用时间点。
遇到同样的问题。比如有多个角色做选择的情况下,想使用角色ID来做绑定设置,而不是userId。想不到好的方法优雅的解决这个问题。UserIdSettingKit.settingUserId这个方法的使用时间点。
如果是同一用户(玩家)下有多个角色,可以尝试使用元信息-附加信息 + FlowContext 的组合。
下面是参考代码
@ProtobufClass
@FieldDefaults(level = AccessLevel.PUBLIC)
public class MyAttachment implements Attachment {
@Getter
long userId;
long userRoleId;
}
public class MyFlowContext extends FlowContext {
public long getRoleId() {
var attachment = this.getAttachment(MyAttachment.class);
return attachment.userRoleId;
}
}
在切换角色时,更改 MyAttachment.userRoleId
数据就行;总的来说,玩家还是那个玩家,只不过使用 userRoleId 来关联相关数据。
如果已经设置了值, 后续想修改UserIdSettingKit.settingUserId中的userId值,正确的操作应该怎样做呢?
目前两个方案都不可行 1.使用ExternalCommunicationKit.forcedOffline(temporaryUserId);断开之前的连接再右客户端自动连接 2.不断开之前的连接,服务端直接重新UserIdSettingKit.settingUserId
都会报session为null