SignalR与后台任务池

时间:2017-12-03 23:49:56

标签: c# asp.net multithreading signalr

我正在构建一个asp.net应用程序,允许用户选择游戏服务器,然后实时查看游戏会话信息。我想使用SignalR在客户端获得有关游戏状态的实时更新。

为此,我想创建一个每个服务器都独有的后台线程。如果用户单击以查看服务器1,并且信号器中没有到该服务器的活动连接,则某些进程应推送后台线程,该后台线程每隔几秒轮询数据库以获取该游戏上的数据,并将该数据推送到客户端。 signalR。如果所有信号器客户端都与该服务器断开连接,则该线程应该停止轮询数据库并正常终止。

如果用户点击查看服务器,并且有客户端已连接到该集线器,则客户端应该只注册并处理已经在signalR集线器中管理的回调。

我无法搞清楚的问题是如何:

  1. 区分不同的signalR回调 (即确保客户端A正在接收服务器A的数据,而不是服务器B)。通过serverID获取唯一的服务器数据,因此集线器中的方法签名在所有客户端和会话中都是相同的。 (即GameHub.UpdateGame(GameModel模型)应为查看该服务器的客户端返回该特定serverID的相应GameModel。)
  2. 管理后台线程池 - 如何管理何时为新的serverID会话添加新线程,以及删除没有客户端连接侦听的线程?

0 个答案:

没有答案