Signalr 信号器是否真的向所有连接的客户端广播每条消息?

Signalr 信号器是否真的向所有连接的客户端广播每条消息?,signalr,xsockets.net,Signalr,Xsockets.net,我们目前正在评估用于实现服务器发送事件的解决方案(不一定使用服务器发送事件EventSource传输) 我们的用例实际上与Stackoverflow非常相似。我们有一个定制的CMS作为SPA实现,支持协作编辑。作为第一步,我们希望服务器在其他用户修改页面时通知同一页面上的所有客户端 显而易见的选择是为此选择信号机,但这句话让我思考: 如果一个框架向所有连接的客户机广播数据,那么我们只有 扭转了AJAX的问题,现在我们有了一个服务器来打击客户端 有他们不想要的信息 2号信号机仍然是这样吗?我的意思

我们目前正在评估用于实现服务器发送事件的解决方案(不一定使用服务器发送事件EventSource传输)

我们的用例实际上与Stackoverflow非常相似。我们有一个定制的CMS作为SPA实现,支持协作编辑。作为第一步,我们希望服务器在其他用户修改页面时通知同一页面上的所有客户端

显而易见的选择是为此选择信号机,但这句话让我思考:

如果一个框架向所有连接的客户机广播数据,那么我们只有 扭转了AJAX的问题,现在我们有了一个服务器来打击客户端 有他们不想要的信息

2号信号机仍然是这样吗?我的意思是,向所有客户广播,而不考虑群体成员,难道一开始就不会让群体完全无用吗

一些统计数据

  • >10000个活跃用户
  • >10000页

在SignalR中,您可以订阅主题(组)并仅获取您订阅的主题的消息和全局消息


我不能完全确定那一段的意思

在SignalR中,您可以订阅主题(组)并仅获取您订阅的主题的消息和全局消息


我不能完全确定那一段的意思

向组发送消息时,不在组中的客户端不会收到消息。这是基于服务器上的发布/订阅模型(因此,当您使用组时,不是客户机决定它是否对消息感兴趣),因此在这种情况下不会“敲打所有客户机”

我认为XSockets团队在这一段中讨论的是,使用XSockets,您可以更细粒度地控制向谁发送消息。因此,您可以向具有特定属性的客户端发送(有点像动态组),而不是向具有特定名称的组发送(您必须首先创建该名称):

但是,如果要发送到范围内的所有客户端,会发生什么 从y到x公里的距离?或者如果你只想瞄准25-30岁的男性 有红头发的人


您必须在SignalR中编写自己的代码才能做到这一点。例如,这可以在生成的代码之上完成。一个简单的解决方案(不一定是最好的)可以使用LINQ根据您感兴趣的属性选择适当的用户,然后从
ConnectionMapping
实例获取所有相应的连接ID以发送到。

当您向组发送消息时,不在组中的客户端不会收到消息。这是基于服务器上的发布/订阅模型(因此,当您使用组时,不是客户机决定它是否对消息感兴趣),因此在这种情况下不会“敲打所有客户机”

我认为XSockets团队在这一段中讨论的是,使用XSockets,您可以更细粒度地控制向谁发送消息。因此,您可以向具有特定属性的客户端发送(有点像动态组),而不是向具有特定名称的组发送(您必须首先创建该名称):

但是,如果要发送到范围内的所有客户端,会发生什么 从y到x公里的距离?或者如果你只想瞄准25-30岁的男性 有红头发的人


您必须在SignalR中编写自己的代码才能做到这一点。例如,这可以在生成的代码之上完成。一个简单的解决方案(不一定是最好的)可以使用LINQ根据您感兴趣的属性选择适当的用户,然后从
ConnectionMapping
实例获取所有相应的连接ID以发送到。

发送到signalr中某个组的消息只会到达该组中的客户端。因此,如果使用组,则无需担心广播问题。 群组是聪明的,除非你必须像@Lars Höppner所描述的那样,群组不是动态的,它们实际上只是一个非常简单的订阅。这就像有一个pub/sub,你说你订阅了一个主题“a”,但在signar中,你是一个组“a”的成员

如果你不使用群组,信号将被广播,那可以,但是考虑这个。

您有两个页面“A”和“B”,它们都连接到中心“MyHub”。 当您将消息从“MyHub”发送到方法“MyMessage”的所有客户端,并且只有页面“a”实现了“MyMessage”的客户端方法时,如果您查看框架选项卡(在chrome中),页面“B”上的客户端仍然会将该消息发送到浏览器 因此,消息将到达对消息不感兴趣的客户,在您获得大量客户或发送敏感数据之前,这不是什么大问题

如果您从未从两个不同的页面连接到同一个集线器,您将很好。如果你总是使用小组,你也会很好。否则,您将不得不考虑消息将到达哪里

主题: -关于信号机,我最喜欢的是漂亮的运输机!
-signer最糟糕的一点是,他们有传输,因为他们设计它时认为websockets是一种操作系统功能(win8 2012服务器可以获取websockets)

发送到signer中某个组的消息只会到达该组中的客户端。因此,如果使用组,则无需担心广播问题。 群组是聪明的,除非你必须像@Lars Höppner所描述的那样,群组不是动态的,它们实际上只是一个非常简单的订阅。这就像有一个pub/sub,你说你订阅了一个主题“a”,但在signar中,你是一个组“a”的成员

如果你不使用群组,信号将被广播,那可以,但是考虑这个。

您有两个页面“A”和“B”,它们都连接到中心“MyHub”。 当您将消息从“MyHub”发送到方法“MyMes”时