编辑:答案是使用firebase实时数据库。
我为下一个人写了一个图书馆。
https://github.com/flipflopapp/turnbased-games-with-firebase
- 问题 -
我正在实施两个玩家国际象棋游戏(www.halfchess.com),我正在考虑使用firebase消息(而不是使用套接字创建房间和两个玩家匹配)。游戏将涉及在两到三分钟内(可以是android或iOS)在两个设备之间发送60-100个国际象棋动作作为消息。我的nodejs服务器将具有支持设备到设备消息传递的代码(从一个播放器接收并发送给其他播放器)。
我无法使用Google游戏服务,因为我没有在我的应用中实施谷歌登录(我只打算保持Facebook登录)。使用firebase(与套接字相比)的优点是我将不得不编写更少的代码(重新连接等),它会处理可伸缩性问题。
我的问题是: -
(1)当用户互相玩游戏时,两个iOS设备(而不是Android设备)会出现问题吗? (例如更高的延迟)
(2)如果用户在物理上更改位置并且包含国际象棋移动的消息未送达,何时会重试?
(3)对于快速的国际象棋游戏,延迟是否可以控制?这就像正常聊天速度的8-10倍。
虽然我在这个主题上阅读了更多内容,但也许已经尝试过的人可以发表评论。
答案 0 :(得分:1)
Firebase云消息传递不适用于某种用途,并且除了无保证的交付时间外(某些研究来自2013 - 2014显示每封邮件超过1秒),FCM可能会在这种用例中暗示throttling。
另见SO post
答案 1 :(得分:1)
我确信上面的答案会奏效但是,我很难让它们发挥作用。这最终适用于我和我的firebase聊天应用程序!
我能够在我的firebase聊天应用程序中添加国际象棋游戏,我使用的只是一个iframe!但是,它第一次没有用,因为我所做的只是将iframe编码添加到我的应用程序中。
这就是我让我的iframe在firebase应用程序中工作的方式......
首先,将目录(cd)更改为聊天应用程序的“公共”文件夹(通常运行“firebase deploy”命令),然后将iframe添加到位于那里的“index.html”文档中。将此地址用于iframe的源URL(src)...
<强> SRC = “棋/ index.html中”强>
接下来,我在同一个公共目录中创建了一个名为“chess”的新文件夹,并添加了国际象棋游戏的“index.html”doc和dependanciess(js,css,images等)。
最后,但不是租赁,在同一个“公共”文件夹中打开一个终端并运行“firebase deploy”将整个内容上传到您的firebase帐户和控制台。
完成!强>
我很确定在你的firebase应用程序中包含你的国际象棋应用程序文档是使iframe最终起作用的原因。我还用几个'div'标签包装了iframe但是,我不确定这是否有任何区别。
请随时来看看,但您必须登录Google才能进入!
之后,只需右键单击页面上的任意位置,然后选择“查看源代码”即可查看代码。干杯!
答案 2 :(得分:0)
为什么不让客户端根据游戏中发生的事情显示消息,而不是让其他玩家向客户端发送消息?这似乎是一个更简单的解决方案,因为唯一需要发送的是实际移动,如果需要,你可以捎带它。
答案 3 :(得分:0)
我意识到我应该关注Firebase实时数据库(而不是消息传递)。
有用的链接: