简单Elixir游戏服设计-关于call还是cast

日期:2019-10-07编辑作者:动漫动画

============================================

必赢437登录,现在TableServer没什么好测试的,如果像SimpleTable那样去测试,实在显得冗余?

====================================================

如果不测,又感觉不是很可靠的样子(曾经的elixir项目我是测进程的),也许是第一次采用这种测试分解方法,还不习惯吧。

必赢电子游戏娱乐,具体看代码吧,也许有更好的做法,而我不知道。

之前写了篇关于call还是cast的讨论,实际等要改成call的时候又发生了疑问。

比如 handle(1xxxxx) 处理登录  handle(2XXXX)处理任务等等。

可惜不是,table_server 还需要广播信息,而这部分广播信息不可能放在玩家进程做,

然后1xxxx 一个文件, 2xxxx 另一个文件。

因为call的确有如下作用:

继而也就不好测试。

 

再导入处理模块了。用了反而会造成冲突。

以及补充测试

但现在觉得没必要,因为自己用少量的代码也可以做到想要的效果,还更清晰。

3. 保证时序,只有call成功了,才能继续执行下一步

我以前会用exactor 去简化api和处理代码,会用点元编程去引进另外文件的处理代码。

告诉用户处理失败? 后续收到该处理的操作完成又该怎么告诉用户?

在以前的项目中,大家是这么做的,以数字编码模块,

引申开来,如果连cast都显得缓慢,那可能又需要直接对socket发操作了(当然这是最后选择)。

该怎么去设计划分呢?(比如你有任务模块、充值模块、不同玩法模块的时候)。

如果call timeout了,call调用的时候,到底该怎么处理?

调用就经过一张路由表去做。

最终还整理了simple_table的测试,以及修正Application.start(GameServer) 为 Application.start(:game_server) 的bug。

刚刚忘记去掉use 用法了,因为用了apply 后就不需要了,

代码已经发布,后续接着:

提交的只是分离PlayerServer的调用到不同文件的演示。

添加玩家的操作

另外这种方式通常把socket交由玩家进程去处理了, 流的编解码也放到玩家进程去了,导致代码不清晰,

1. 阻塞客户端

不是说这种方式不好,而是觉得这种方式偷懒省去了api。

这样如果在调用端和被调用端都发消息,就有点冗余。

通常,所有的玩家的操作都会经过玩家进程去处理。那么当玩家的操作很多的时候

我想这大概就是大家用cast的最大原因。

添加不翻牌、不补牌的操作加速牌局

2. 有返回值能确定操作是否成功,并能很好的支持测试

暂时到这里了,一整天都在思考call 和cast,以及思考测试的问题,搞得很疲劳。

要么就是try catch,并丢弃那些垃圾信息。

如果table_server 只是为一个玩家所用,那么可能是合适的。

可是除此之外,还有其他好处吗?麻烦呢?

像游戏这种,通常中间会有其他消息需要处理,这时候为了及时处理更新,call可能就不合适了。

cast 是丢过去不管,有返回自然收到,没有返回的话,对不起你自己看着办重试(看起来更流畅?)

 

胡言乱语,我还是决定应用call,并且广播消息只在桌子进程统一发。

=====================================新的想法=============================

我代码就保持call不改了(棋牌可能影响不大),我也懒得改,这个系列主要是探讨总结用的。

call 大抵适用于那种call期间无需处理其他事情的调用。

按照GenServer的文档说明,调用者要么崩溃保持干净,

本文由必赢437登录发布于动漫动画,转载请注明出处:简单Elixir游戏服设计-关于call还是cast

关键词:

简单Elixir游戏服设计-关于call还是cast

============================================ 必赢437登录,现在TableServer没什么好测试的,如果像SimpleTable那样去测试,实在显得...

详细>>

MacOS Sierra很慢?为什么?以及如何解决?

升级到MacOSSierra后,如果Mac变慢,这是正常的。让我们看看下面的话来看看可能的原因和解决办法。 MacOS Sierra Slow您的...

详细>>

MacOS Sierra很慢?为什么?以及如何解决?

升级到MacOSSierra后,如果Mac变慢,这是正常的。让我们看看下面的话来看看可能的原因和解决办法。 MacOS Sierra Slow您的...

详细>>

什么样有逻辑性的去剖析一款产品(顾客维度篇

现在网上有众多的产品分析的案例,我也分析过不少,但是可能大家已经看花眼了,所以这次来和大家交流一下逻辑...

详细>>