我正在用blazor制作一款多人视频游戏。
这个游戏非常基础,可以通过网络浏览器玩。艰苦的工作是使玩家之间的实时交流成为可能。我过去常常使用像red5这样的socket服务器。
今天,我想用微软的工具构建这个视频游戏:Blazor和signaler。
我的问题是我在服务器端需要一些线程。这些线程将管理游戏逻辑。我已尝试创建一个BackgroundService任务。它运行良好。我可以通过信号中枢与玩家交流。但我害怕BackgroundService上的一些东西:它们连接到http服务器进程。有时IIS会终止并创建新进程。那么,我如何才能确保我的BackgroundService永远活着呢?(即使没有连接播放器,例如在晚上(。如何确保我的BackgroundService不会被IIS终止和重新创建?
我曾尝试使用kestrel web服务器,并将其置于nginx代理之后。我的后台服务从未被杀。但我想知道kestrel是否被设计为同时处理许多网络客户端。。。
是否有BackgroundService对象的替代方案?我曾想过创建一个单独的程序,但我更喜欢单一的方法。。。
非常感谢
如果你这么要求的话,我认为你的网络应用程序不会自动重启。它重新启动的唯一时间是部署,或者手动重新启动或停止/启动。因此,我认为将后台服务用于较轻的工作负载是安全的。
但如果你打算进行任何形式的缩放,我建议你调查Hangfire。