【问题标题】:SignalR 1.0 beta connection factorySignalR 1.0 beta 连接工厂
【发布时间】:2014-04-30 02:05:54
【问题描述】:

现在新版本的 SignalR 已经取消了 IConnectionFactory 接口,建议使用什么模式来设置客户端的连接 ID?

【问题讨论】:

    标签: signalr


    【解决方案1】:

    在 1.0 中不再有任何推荐的模式来设置 SignalR 客户端的连接 ID。

    最佳做法是在 SignalR 服务器上维护将应用程序的用户映射到连接 ID 的状态。在此地图中添加连接 ID 的明显位置是 OnConnected。您可以使用 OnDisconnected 删除连接 ID。

    也可以在 OnConnected 中完成的另一个选项是将客户端的连接 ID 添加到具有您之前在 IConnectionIdFactory.CreateConnectionId 中为客户端创建的名称的组中。自然地,该组将只包含一个客户端,因此您可以将发送到自定义连接 ID 的所有消息发送到该组。

    注意:如果您使用映射选项,如果您担心 AppDomain 重新启动并且将此状态存储在某种静态变量中而不是更持久的东西中,您也可以尝试在 OnReconnected 中将连接 ID 添加到映射中。显然,如果您要向外扩展 SignalR,则需要共享状态。

    【讨论】:

    • 感谢您的回答。我只是希望我更喜欢这个答案 =)
    • 是的,我也很不安你删除了这个 IConnectionIdFactory 接口。为什么不让用户随心所欲地使用这个或新的?谢谢
    • 这是否也意味着 SignalR 在打开超过 5 个标签时不起作用(仅在 Chrome 和 FF 上尝试过,不知道其他浏览器)?如果我们为每个选项卡设置不同的 connectionid,Chrome 最多可以打开 6 个到同一服务器的连接……哎呀!任何解决方法(对于旧版本的 SignalR,解决方法是设置 connectionid 客户端)。
    • 为每个客户端创建一个组,使用不同的连接 ID 也是一个更好的主意,如果优化不是问题的话。
    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2017-12-08
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多