【发布时间】:2018-06-20 13:27:08
【问题描述】:
原始问题 我对 PHP Web 开发和 Laravel 比较陌生,正在寻找一种实时更新前端数据的好方法。我正在开发一个简单的基于网络的游戏,可以与多个玩家一起玩。轮到玩家时,所有玩家前端的数据都需要更新。
我知道有两种方法可以做到这一点
- 网络套接字: Laravel 默认不支持 websockets,这意味着我需要使用像 socket IO 这样的第三方服务。因为我只想在“普通”虚拟主机上运行我的应用程序,所以这不是一个选项。
- 推送消息:我也可以将推送消息与 Pusher 或 firebase 等服务一起使用,但此选项在使用免费帐户时有限制,或者我需要在需要超过 x 个资源后付费。这不是我喜欢的。
有没有办法在不使用 3rd 方服务或在服务器上安装 3rd 方应用程序的情况下更新前端数据?
与上一个问题不同,我很好奇推送消息(以及最终建议的解决方案)是否也适用于移动浏览器。
问题更新: 在 Yeeooow 发表评论后,我注意到我需要提出不同的问题。也许我需要更多地解释我的“问题”并寻求解决方案。
在我的游戏中,玩家可以决定自己的回合何时结束,然后他可以与其他玩家交换一张牌。在这两种情况下,都需要为所有玩家更新数据。我在前端使用 Vue,后端使用 Laravel。满足我的需求的最佳做法是什么?
【问题讨论】:
-
对于实时游戏,您需要使用网络套接字。 Laravel 内置了广播支持,甚至 Laravel Echo 也有 Javascript 来支持这一点。说 Laravel 不支持这个是无效的。
-
说到实时应用程序和 Laravel 支持实时更新,没有办法不使用 3rd 可能你可以在这里查看..laracasts.com/discuss/channels/laravel/…
-
您说“实时更新我的前端数据”,但您的游戏听起来(推断)回合制。为什么不直接使用 ajax 或者考虑使用 Vue。无需使事情过于复杂,这两个选项都适用于共享主机。
-
@Yeeooow ,我已经在前端使用 vue,但是当玩家 x 完成轮到时我如何通知其他用户?游戏中还有一个“交易卡”功能,在这种情况下也需要通知玩家。我认为“实时”是这里的最佳选择......我对所有解决方案持开放态度,也对你的解决方案持开放态度
-
@RoDo - 我指的是实时问题,因为您想要实时信息,但游戏听起来是基于转向的,有些人认为(再次推断)游戏本身是实时的(比如FPS,很小但很重要的区别)。我会这样处理它,将游戏视为数据库中的记录(很可能是那个或一组数据点) - 当它的一个人轮到他们时,记录在他们完成时被锁定到他们被锁定到下一个人等等重新卡交易 - 这将是相同的想法,但在不同的桌子上并锁定给可以发起交易的用户等
标签: laravel websocket push-notification web-frontend