问题标签 [signalr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2112 浏览

c# - 使用 SignalR 时如何在集线器内选择性地广播

我正在尝试解决一个问题,即我将拥有单个 Hub 的订阅者,但他们将来自不同的城市,我的页面将检测到他们来自的城市。我有一个每个人都会收听的集线器,我想从这个集线器有选择地向特定城市广播消息。

请告知该方法是否错误或告知我如何有选择地通过集线器发送消息。我可能需要使用较低的 PersistentConnection API 方法。

提前致谢。


我回到这个问题来评论结果。我发现我真正需要做的是拥有动态房间,这些房间完全基于朋友关系或团体关系而存在,并且与城市相关,因为每个“团体”对于个人的观点来说都是独一无二的,所以有太多的可能性。这对我来说使用 SignalR 太难了,所以我只是在 JavaScript 中使用 node.js 和 socket.io 的散列和数组对其进行了编码,因为我最熟悉 JavaScript。Node.js 并不快,因为它没有被编译,而且 c# 已经允许节点吹捧的异步东西作为它的卖点,所以不要把它当作对 SignalR 的打击。只是分享。如果您好奇,这里是它在 github 上的链接:https ://github.com/sebringj/zipstory-node

0 投票
1 回答
745 浏览

c# - 如何在 SignalR 中拥有只读广播视图

我只想从服务器的内部进程发送消息,然后发送到客户端,并且由于 SignalR 的灵活性,我担心 XSS 可以轻松发送消息“myhub.addMessage”并发送我不想广播的垃圾。例如,我有 50 个人在一个页面上侦听来自 SignalR Hub 的消息。他们没有明确的方式通过 GUI 发送消息,但是,一个笨手笨脚的人可以轻松地破解一些脚本并开始发送消息以供所有人查看。

换句话说,它有点像拥有一个聊天室,但你想阻止人们发送消息。你只希望他们听到。说得通?

0 投票
1 回答
235 浏览

c# - OnDisconnectAsync 不起作用...?

我正在遵循这些准则

但是当我尝试覆盖类任务时出现OnDisconnectAsync问题PersistentConnection。代码如下:

我发现当用户关闭选项卡或浏览器时,OnDisconnectAsync任务不会触发。

我的代码有什么问题或我如何知道断开连接的客户端?

0 投票
1 回答
782 浏览

javascript - 你如何让 SignalR 与 RequireJS 一起工作?

将 SignalR 与集线器一起使用时,您需要包含一个 src 为“/signalr/hubs”的脚本 - 即没有 .js 扩展名。当我尝试将它与 RequireJS 一起使用时,它坚持添加“.js”扩展名,这意味着永远不会加载集线器代理。

任何想法如何阻止它这样做?

0 投票
0 回答
5352 浏览

c# - SignalR 在高负载下失败

我有一个负载非常高的网站,并将我的测试应用程序保存在隐藏的 iframe 下,以确保目标框架是我用例的不错选择。首先尝试 SignalR 测试应用程序,然后在同一服务器配置下 Pokein。目前我们正在使用 Flash 远程解决方案,但很快我们计划对其进行更改。

我花了一些时间让我的基于 SignalR 的测试应用程序在我的网站的高负载下处理并发客户端更新。它在这种情况下运行良好(一些客户端请求消息)..当大多数连接的客户端同时请求消息时,它严重失败(我需要从 iframe 调用中删除它)..我曾怀疑我的服务器配置是问题,但相同的场景在其他付费解决方案 Pokein 下工作没有任何问题。

有什么我忘记的技巧吗?

2012 年 2 月 10 日更新: 虽然我们决定在我们的解决方案中实现 PokeIn,但我在 Github 上尝试了最新的 SignalR 代码(可能对其他人有帮助).. 结果是一样的。

2012 年 3 月 13 日更新: 场景:(再一次)-尝试在给定的时间间隔内向数千个连接的客户端发送消息,比如说(1 秒)。测试并看到结果并不难。我觉得,我是唯一一个为这种非常常见的用法强调图书馆的人。

详细信息(如何重现 - 使用 Github 的 0.5 进行测试)- Server 2008 R2 32GB DDR3、i7-2600 3.4Ghz、2x256 GB Crucial M4 - ASP.NET 3.5

  • 单页应用。每秒从服务器更新客户端的时间
  • 该页面嵌入到由多个网站加载的隐藏 iframe 中,以便进行真实的负载测试。

  • 问题

    • 系统在某个时候锁定(大约 800 个用户)并且大多数客户端没有从服务器获取更新时间

    • 系统锁定后,该单个应用程序页面将停止响应

我还尝试将间隔增加到 5 秒。这次系统响应更快(大约 950 个用户),但结果是一样的。我在 .NET 2 和 .NET 4 应用程序池上试过这个。

希望这些细节就足够了。重复这个测试对我来说很容易,一旦我找到空闲时间,我会用未来的版本重复测试。

0 投票
2 回答
1553 浏览

asp.net-mvc - SignalR 中集线器的主干模型

如何在可以使用 SignaR 集线器的 Backbone 中创建/将此脚本转换为模型?例如:


编辑

我确实想出了这个:

但由于以下错误,这不起作用:

此错误::55885 意外响应代码:200

0 投票
1 回答
3641 浏览

signalr - SignalR 从外部应用程序向客户端发送消息

是否可以从另一个进程向连接到集线器的客户端发送消息?我设置 LINQPad 以引用我的 Hub 项目的 DLL,并设置 VS 以将调试附加到 LINQPad 进程。我的项目有一个使用以下代码的 HubNotification 类:

调试时,我可以看到此代码被调用,但我连接的客户端从未收到消息。我已经用 Fiddler 验证了上面的代码运行时没有任何 HTTP 发生。我错过了什么或者这不可能吗?

0 投票
0 回答
1170 浏览

asp.net-mvc - SignalR.Client On -eventhandler 未接收任何事件

前提:

我有一个 Windows 服务,它充当基于 IIS 的 ASP.NET MVC3 应用程序的客户端。它们都在同一台机器上运行,我试图让它们通过 SignalR 相互通信。

我正在使用从 Windows 服务上的 Nuget 下载的 SignalR.Client 库,并且已成功将其连接到 IIS。但是,现在我正在从 MVC 端 SignalR Hub 调用一个函数,该函数应该传播到客户端(包括我的 Windows 服务)——Windows 服务没有接收任何事件。

我试过的:

我尝试过以多种方式订阅服务器端事件,但这是我当前的代码:

然后在 IIS 端调用:

因此,我尝试从 Windows 服务调用事物,并且这些工作完美,但是 - 当信息需要来自 IIS-> Windows 服务时,绝对没有任何反应。

现在,看到 SignalR 内部有动态绑定,我没有看到任何异常被抛出,我完全不知道如何调试它。我用事件查看器检查了应用程序日志,那里没有任何不确定的地方。

我在想,如果 Windows 中可能有一个系统不允许 IIS 连接到本地机器(作为一种安全措施),但奇怪的是连接在一个方向而不是另一个方向上完美工作。

关于如何调试这个的任何想法,或者实际上这可能是什么?

最好的问候,拉里

0 投票
3 回答
1859 浏览

signalr - 有没有办法从 SignalR 中的 Clients.method 调用中排除客户端?

我正在评估 SignalR(恰好与 Knockoutjs 一起使用),看看我们是否可以使用它来通知客户端并发问题。基本上,用户“a”保存了一条记录,并通知用户“b,c,d,e,f,g”。我基本上有一个通知所有客户的示例。所以我想我快到了。

我遇到了这个链接,它引导我走上当前的道路。我也一直在查看Github上的文档。

Clients.method()基本上我想从通话中排除单个客户。我看不到一种遍历客户端并检查 ClientId 的方法。我能看到的唯一其他方法可能是考虑使用组来跟踪它,但这似乎有点麻烦,但我也遇到了问题。

0 投票
2 回答
2509 浏览

mono - 带有单声道的 Nginx、SiginalR 和 FastCGI:未找到应用程序

我正在尝试使用所有这些设置运行,但我现在失败得很厉害。我主要想测试 Websockets,由于 IIS 7.5 不支持它们,我试图用 Nginx 和 Mono/FastCGI 来设置它。

所以,一切都是基于 Windows 的,没有 linux,没有 unix:windows。现在,我通过调用http://localhost:7171/app(或http://127.0.0.1:7171/app)得到的只是这个错误:

这是现在的配置:

fastcgi.conf

fastcgi_params

nginx.conf

这是用于启动 fastcgi 的 cmd 行:

非常感谢!