问题标签 [signalr-hub]

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 回答
1838 浏览

asp.net-mvc - signalR 未找到元素错误消息

在包含 signalR 的页面上,我在 firebug 中收到以下错误:

一切仍然正常,但只是想看看这是否会成为一个问题。谢谢

0 投票
1 回答
748 浏览

signalr - 用于向 SignalR 中的组发送消息的客户端事件处理程序

我正在尝试将 SignalR 集成到我的 MVC 项目中,并且一切正常,但是有些事情我做不到,使用最新版本的 signalR:http: //blogs.msdn.com/b/webdev/archive/ 2012/08/22/announcing-the-release-of-signalr-0-5-3.aspx

并编写此 wiki 中描述的组功能:

https://github.com/SignalR/SignalR/wiki/Hubs

特别是在 MANAGING GROUPS 主题中,有以下代码可以向特定组发送消息:

我想不出两件事:按照代码的表述方式,我有以下异常:

除此之外,客户端中引发的事件究竟是什么,以便用 jquery 正确处理它?

0 投票
0 回答
269 浏览

asp.net - 重新创建 ChatR 失败。SignalR 不会启动集线器

我正在尝试控制 SignalR 并直接进入ChatR

我首先创建了一个 mvc3 应用程序并写下了我自己的实现,同时保留了 git 中代码的基本功能。它没有成功,所以我撤销了我自己的更改,最终得到了一个 1:1 的 ChatR 副本,没有任何我的改进 - 仍然没有工作。所以我将源代码复制/粘贴到我的项目中,它仍然不会启动。

Chrome 给了我以下 2 个 javascript 错误:

我读过,Jquery 可能在代码中被引用两次。首先在 SignalR.js 被引用之前和在 SignalR 之后一次,使对象无效,但事实并非如此。

然后我下载了 KsigDo,看看我是否可以在一个完全不相关的项目上重新创建问题。再次弹出上述错误。

底线是:ChatR 源代码已下载 - 有效。我自己的命名空间中的 ChatR 副本没有

我已经在 vs2010 专业版/vs2012 web 中使用 mvc3 和 4 进行了尝试。

希望各位好心人能帮帮我。亲切的问候。

0 投票
1 回答
9657 浏览

javascript - SignalR js 客户端似乎忽略了 url 端口

我正在尝试用 SignalR 组合一个简单的“Hello World”风格的应用程序。稍微复杂的因素是 SignalR 集线器需要自托管,而不是在 IIS/ASP.NET 中。据我所知,我已经让服务器端工作了,它在端口 8080 上可用,但我在连接客户端时遇到了麻烦。我目前遇到的问题是 SignalR 客户端似乎忽略了我指定的 URL 上的端口。

具体来说,我在这里有这段代码:

:8080/signalr/hubs 脚本加载成功,看起来不错,也就是说,里面有定义roomHub,所以我知道服务器已经启动并正在运行。

但是,在$.connection.hub.start()运行时,它似乎应该尝试为诸如http://app.dev.alanta.com:8080/signalr/signalr/negotiate?=1353072553935之类的 URL 打开连接。相反,Firebug 告诉我它忽略了 8080 部分,而是尝试与 URL http://app.dev.alanta.com/signalr/signalr/negotiate?=1353072553935协商连接。当然,这不起作用 - 没有 SignalR 服务在端口 80 上侦听,只有常规 Web 服务器 - 所以它失败并显示消息“无法连接:SignalR:协商请求期间出错”。

我还应该注意,在 jquery.signalR-0.5.3.js 文件中,解析连接的代码位似乎确实忽略了端口:

这是一个错误吗?还是我误解了什么?

0 投票
1 回答
2392 浏览

signalr - 获取 SignalR 服务器调用客户端的正确语法

我正在用 SignalR 组合一个非常基本的“hello world”应用程序,但需要注意的是它是自托管的,这会带来一两个额外的问题。基本上,我试图找出从服务器调用客户端方法的正确方法。

例如,在我的客户端上,我有一个如下所示的方法:

我可以像这样从我的服务器端集线器成功调用它:

它可以工作,但当然,它会调用所有客户端,而不仅仅是一个。在我在网上看到的各种示例中(例如,https://github.com/SignalR/SignalR/blob/master/samples/Microsoft.AspNet.SignalR.Hosting.AspNet.Samples/Hubs/Benchmark/HubBench.cs,我看到各种各样的命令,看起来我应该能够指定谁被调用,例如:

但是我无法使上述任何语法起作用。对于Clients.All.onEcho()Clients.Caller.onEcho(),绝对没有任何反应。对于Clients.Caller(Context.ConnectionId).onEcho(),Firebug 告诉我它实际上是在尝试调用Caller()我的 JavaScript roomHub 实例上的一个方法,而这当然不存在。

不过,这有点奇怪。如果我查看 Hub 类,我会明白为什么这些都不起作用 - 因为 Hub 构造函数用 NullClientProxies 覆盖了它的“Clients”对象的一堆属性:

但我有点困惑为什么它会这样做 - 或者为什么样本似乎仍然有效 - 或者预期的方法应该是什么。

有什么想法吗?我在这里做错了什么?

0 投票
1 回答
713 浏览

asp.net-mvc - 为什么从带有 SignalR 的 MVC 应用程序推送的消息无法到达客户端?

我有一个简单的 SignalR 集线器应用程序,在服务器端使用 MVC4/C#,托管在 Azure Web 角色中(单个实例,在模拟器中,带有 http 输入端点),并且 TypeScript 在客户端编译为 JS。我有一个图片库,许多客户可能会上传到这些图片库,当有人上传时,我希望任何其他连接的客户都能收到一条消息,告诉他们这已经发生并让他们有机会刷新,类似于通知您的方式关于您在 SO 上查看的问题的新答案。

在服务器上,我有一个方法可以返回画廊中的项目列表,还有另一种方法可以将消息推送到客户端,如下所示:

List然后在传入类型的派生类中重写该函数T- 这工作正常)。

在客户端,使用来自definitelyTyped 的 SignalR 定义文件,有以下 TypeScript:

...它给出了以下JavaScript:

调用我的列表功能非常有效。我完全按照预期从集线器收到了回复。如果我终止服务器进程但保持浏览器处于活动状态,我会在控制台中收到错误,显示客户端正在尝试保持连接。

我将这两行添加this.Caller.pushMesage("HELLO, CALLER"); PushMessage("HELLO, ALL CLIENTS");到服务器端的 List 函数中,以测试服务器将内容推送到客户端。我希望它们在列表函数返回之前被调用,但这并没有发生。我也尝试过从外部调用集线器,如下所示:

...但是虽然我可以从跟踪中看到我的 PushMessage 函数正在被调用,但我从来没有在客户端得到任何东西。

我究竟做错了什么?

我已经尝试过的参考资料包括:

http://blogs.msdn.com/b/brunoterkaly/archive/2012/04/09/how-to-build-cloud-based-asynchronous-scalable-web-applications-with-near-real-time-persistent-长时间运行的连接-with-signalr.aspx

http://msdn.microsoft.com/en-us/magazine/hh965663.aspx

https://github.com/SignalR/SignalR/wiki/Hubs

https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubs-%28No-Proxy%29

0 投票
2 回答
2791 浏览

signalr - Signalr (1.0.0-alpha2) Hubs - 你可以在连接开始后添加客户端功能吗?

使用 Signalr (1.0.0-alpha2),我想知道是否可以在连接启动后添加客户端功能。

假设我创建了连接并获取了代理。然后我将一些 Server Fired 客户端功能添加到集线器来做一些事情。然后我开始我的连接。然后我想向我的集线器对象添加更多的 Server Fired 函数。这可能吗?

这个例子不现实,但我基本上想在集线器开始订阅原始代码不关心的新事件后将我的“myHub”变量发送到不同的对象。

现实生活示例:具有许多不同中心事件(新站点访问、聊天消息、站点错误)的仪表板。我在连接开始后“订阅”,然后将我的集线器代理传递给我所有不同的 UI 组件以处理它们特定的“消息类型”。我应该为这些创建单独的集线器,还是应该能够即时添加更多的 Server Fired 客户端功能?

0 投票
1 回答
633 浏览

c# - 如何使用会话变量中的值作为signalR中组名的一部分

嗨,我正在尝试设置 signalR 来向网络用户分发消息,问题是一个站点拥有不同的“区域”和“用户类型”。

当用户通过传递 url 参数访问站点时决定区域,然后将其存储在会话变量中,“用户类型”默认情况下未登录,然后在用户登录时更改用户类型(从返回网络服务)并存储在用户对象中。

我的目标是在用户访问站点时使用 signalR 连接到集线器,并将用户 connectionId 添加到组名,使用会话中的“区域 id”和上下文中用户对象的“用户类型 id”。

我遇到的问题是我可以获得用户 ID,但是当涉及到区域 ID 时,signalR 无法访问会话。我理解不允许在 signalR 中使用会话的原因,但是否有人知道是否有一种方法可以启用此功能或另一种方法可以访问用户区域,以便我可以创建这些独特的组。

0 投票
5 回答
51064 浏览

c# - 获取连接到 SignalR 集线器的侦听器和客户端的数量

有没有办法找出侦听器的数量(连接到集线器的客户端?)

如果至少连接了一个客户端,我正在尝试运行/启动一项任务,否则不要启动它:

谢谢

0 投票
2 回答
16822 浏览

signalr - SignalR 覆盖 OnConnected()、OnDisconnected()

我正在尝试覆盖OnConnected(),OnDisconnected()方法,但我得到:

实现IDisconnectIConnect接口和在内部进行处理是否Connect()Disconnect()相同?OnConnected()OnDisconnected()

是什么赋予了?