在Blazor服务器中同步多个用户



我有一个几乎可以正常工作的服务器系统,用于慢节奏的多人游戏,如hangman,图片查找谜题等,这些游戏需要同步才能正常工作。(例如,每个人都应该同时看到图片)

我想使用一个Singleton游戏对象发送游戏开始和更新事件给多个用户,他们都在一个页面上注入了Singleton

但我的逻辑是不对的——当用户离开游戏或失去连接时,页面的稳定性就会受到影响。我确实需要拿起播放器,如果他们重新连接,但当然主要关心的是,页面不会崩溃,所有的用户由于孤立的事件处理程序等。

有人能想出一个干净的架构来做这个吗?在开发过程中,我所尝试的几乎所有方法都是有效的,但在实践中,当多个用户共享一款游戏时(尤其是在移动设备上),我便会遭遇失败。

你可以创建一个游戏服务器来管理连接的用户和他们状态下的游戏房间。例如:创建一个TCP服务器(也许在c#控制台应用程序上),现在让玩家a开始一个猜字游戏。这将在服务器上创建一个game room实例,该实例具有playersendedwinner等。现在有了这个游戏房间玩家A与B共享的Id,他们连接到同一个游戏,现在他们都不是主持人,所以如果创作者决定离开,游戏不会结束,你可以等他重新连接。

您可以使用Playfab之类的服务来获取活动服务器列表。在您的客户端应用程序上,它将连接到TCP套接字,发送消息,服务器将它们全部转发给其他播放器。一个简单的发布-订阅实现,其中客户端"订阅"。声明更改的事件,在屏幕上为两个客户机显示下一个字母。在youtube上做一个简单的搜索可以帮助你创建一个TCP连接,以及如何在它们之间发送消息。

最新更新