首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka FSM超时通知

Akka FSM超时通知
EN

Stack Overflow用户
提问于 2016-03-27 09:05:32
回答 1查看 365关注 0票数 0

我正在开发一个游戏,游戏逻辑/状态本身由Akka FSM演员管理。我的状态之一是WaitingForAnswer,与此状态相关的业务逻辑是,玩家(也是参与者)必须在20秒内回答,否则他/她就会失去一分。所以我这样定义了这个州:

代码语言:javascript
复制
when(WaitingForAnswer, 20 seconds) {
    // event handling logic here
}

到目前一切尚好。现在我要做的是有一些提醒-在状态超时的一半已经过去(10秒后),我想发送一个提醒给球员,他必须尽快回答。

我的想法:

  1. 通过将setTimer(name, msg, interval, repeat)设置为10秒,在进入WaitingForAnswer状态时使用interval。这样,我的FSM演员将得到提醒,提醒他提醒演员。你可以看到这有点..。不是很酷。
  2. 使用调度程序,一旦我的FSM参与者进入WaitingForAnswer状态,在未来的10秒内安排一条消息,将该播放器参与者作为接收者。当然,在这种情况下,我必须确保在播放器参与者及时响应时取消预定的消息。

还有其他更自然的方法来实现这一点吗?某种钩子?对不同的接收者使用setTimer的一些方法?

EN

回答 1

Stack Overflow用户

发布于 2016-03-27 14:26:41

按照您解释问题的方式,您的状态WaitingForAnswer实际上是两个行为非常相似的不同状态。您可以将状态超时定义为10秒,如果播放机回答,则应用逻辑,否则,您将执行状态转换到WaitingForAnswerAfterReminder,状态超时将再次由与前一个状态相同的业务逻辑处理。

在我看来,您似乎试图在WaitingForAnswer中建模两种状态:提醒之前和之后。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36245643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档