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

2019-11-09 09:22 来源:未知

 

日常,全体的游戏者的操作都会透过游戏发烧友经过去管理。那么当游戏发烧友的操作超多的时候

事先写了篇有关call仍然cast的研商,实际等要改成call的时候又发生了疑义。

该怎么去设安插分呢?(举例你有职务模块、充钱模块、不相同玩的方法模块的时候卡塔尔国。

因为call的确好似下效果:

在那前的品类中,大家是那样做的,以数字编码模块,

1. 打断客商端

举个例子 handle(1xxxxx) 管理登陆  handle(2XXXX卡塔 尔(阿拉伯语:قطر‎管理义务等等。

2. 有重回值能鲜明操作是还是不是中标,并能很好的支撑测量试验

接下来1xxxx 二个文本, 2xxxx 另二个文件。

3. 有限支撑时序,独有call成功了,技术继续履行下一步

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

可是除却,还会有任何收益吗?麻烦呢?

不是说这种措施倒霉,而是认为这种艺术偷懒省去了api。

如果table_server 只是为叁个游戏的使用者所用,那么恐怕是方便的。

除此以外这种方法经常把socket交由游戏发烧友经过去管理了, 流的编解码也置于游戏用户经过去了,以致代码不明晰,

惋惜不是,table_server 还须求广播新闻,而那有的播放音讯不也许位于游戏的使用者经过做,

进而也就不佳测量试验。

诸如此比风流倜傥旦在调用端和被调用端都发音信,就有一点点冗余。

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

cast 是丢过去不管,有再次来到自然收到,未有重临的话,对不起您本人看着办重试(看起来更顺畅?卡塔尔国

自个儿早先会用exactor 去简化api和管理代码,会用点元编制程序去引入其它文件的拍卖代码。

少年老成旦call timeout了,call调用的时候,到底该怎么管理?

但现行反革命认为没供给,因为自个儿用一丢丢的代码也能够成功想要的成效,还更清楚。

告知客户处理失利? 后续收到该管理的操作完结又该怎么告诉客户?

付给的只是分开PlayerServer的调用到差异文件的演示。

服从GenServer的文书档案表达,调用者要么崩溃保持到底,

切实看代码吧,也可能有越来越好的做法,而作者不精通。

抑或便是try catch,并屏弃这几个垃圾信息。

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

口不择言,作者要么调整运用call,并且广播音讯只在桌子进度统一发。

无独有偶忘记去掉use 用法了,因为用了apply 后就无需了,

最后还整理了simple_table的测验,甚至改革Application.start(GameServer) 为 Application.start(:game_server) 的bug。

再导入管理模块了。用了反倒会产生冲突。

临时到此地了,一成天都在思维call 和cast,以至考虑测量试验的主题材料,搞得很疲倦。

最近TableServer没什么好测验的,假使像SimpleTable那样去测验,实在显得冗余?

假设不测,又认为不是很可相信的样子(曾经的elixir项目自己是测进程的卡塔 尔(英语:State of Qatar),大概是第壹遍采取这种测量试验分解方法,还不习于旧贯吗。

代码已经发表,后续随着:

加多不翻牌、不补牌的操作加快牌局

累积游戏用户的操作

以致补充测验

=====================================新的主见=============================

call 只怕适用于这种call时期没有必要管理任何作业的调用。

像娱乐这种,平时中间会有别的消息需求管理,此时为了及时管理更新,call大概就不适当了。

自己想那大致正是贵裔用cast的最大原因。

引申开来,若是连cast都体现缓慢,那大概又须求直接对socket发操作了(当然那是最终选项卡塔 尔(英语:State of Qatar)。

本人代码就保险call不改了(棋牌大概影响十分小卡塔 尔(英语:State of Qatar),我也无意改,那个体系主若是探究总括用的。

 

TAG标签:
版权声明:本文由澳门新葡亰娱乐在线发布于葡亰_棋牌,转载请注明出处:简单Elixir游戏服设计-关于call还是cast