使用SignalR,我想知道设置我的集线器的最佳方式是在以下场景下:假设我有一个网络赌场应用程序(只是为了好玩),它有三个游戏,扑克,二十一点和老虎机.扑克和二十一点都是多人游戏,因此他们有聊天功能而插槽没有.好的,为了支持这一点,我正在考虑以下列方式设置我的集线器.
BaseHub(处理扑克,二十一点和老虎机常见的连接内容)
PokerHub:BaseHub(处理扑克游戏)
BlackjackHub:BaseHub(处理二十一点游戏)
SlotsHub:BaseHub(处理老虎机游戏)
ChatHub(处理聊天功能)
我想这个网络应用程序的扑克页面连接到PokerHub以及ChatHub和Blackjack页面会做类似的事情.Slots页面显然只能连接到SlotsHub.
现在,我不确定的事情是:扑克/二十一点页面是否应该连接到PokerHub/BlackjackHub和ChatHub,或者是否有某种方式可以让他们只连接到PokerHub/BlackjackHub并将聊天功能委托给聊天毂?在这种情况下,我可能会创建一个接口IHasChat或类似的东西.在任何一种情况下,ChatHub都应该扩展BaseHub吗?目前,BaseHub仅实现IConnected,IDisconnect以及处理基本的Group功能(JoinGroup,LeaveGroup).另外,BaseHub应该是一个共享实例(单例)吗?
最后,如果你认为我只是完全错了,请告诉我.这是我的第一个SignalR项目,我知道我不是它的专家.另外,我知道这里有几个问题.如果你能回答其中的任何一个或全部,无论哪种方式,我都非常感激.
谢谢,汤姆
您可以拥有任意数量的集线器,因为只有一个连接到SignalR服务器.集线器是RPC实现,并且都共享相同的连接. js客户端集线器上的Wiki页面显示如下连接:
$.connection.hub.start()
Run Code Online (Sandbox Code Playgroud)
其中hub是js客户端内的命名空间.
这已经存在一段时间了,所以你可能不再需要答案,但是......这里什么也没有。
我是 SignalR 的新手,所以我有点不确定您的设计将如何影响其性能。如果这不是问题,我可能会考虑这样的对象模型:
abstract BaseHub : Hub;
abstract MultiplayerHub : BaseHub; // (Handles chat and other MP necessities)
BlackJackHub : MultiplayerHub;
PokerHub : MultiplayerHub;
SlotsHub : BaseHub;
Run Code Online (Sandbox Code Playgroud)
我想不出这种设计会给 SignalR 带来任何问题的任何原因,但同样,我没有太多的经验可以继续。
| 归档时间: |
|
| 查看次数: |
3541 次 |
| 最近记录: |