问题标签 [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 回答
2136 浏览

javascript - 试图用 Knockout ViewModel 来暗示 SignalR

我有以下代码,它似乎没有调用客户端并使用信息更新 KnockOutJS 视图模型。GetOuting() 在页面加载时被调用,并且正确的信息被输入到视图模型中。Chrome 在开发者工具中没有显示 JS 错误。从那时起,我无法弄清楚如何对其进行故障排除。任何帮助表示赞赏。SignalR 集线器

视图模型

HTML + JavaScript

经过进一步调试,它似乎在行中

看起来我在尝试设置 ID 时遇到了“undefined_method”异常。这对其他人有意义吗?

0 投票
2 回答
4766 浏览

javascript - 移动网络上的 SignalR?

我正在评估 SignalR 技术用于我们的新产品(面向广大受众的移动 Web 应用程序,除此之外它需要在某些页面上进行实时聊天)。

我按照指南创建了一个非常基本的聊天演示。然后我在我的 IIS 上部署了演示,并开始和自己聊天。所有客户端都在同一个 WiFi 网络上。

桌面浏览器或多或少可以正常工作。

然而,iOS 4.2 上的 Safari 和 WP7.10 上的 IE - 他们都糟透了。有时当我按下“发布”按钮时什么也没发生。有时传出消息可以正常发送到桌面 Firefox,但是没有传入消息。

也许我错过了一些明显的东西?也许我需要 jquery mobile 而不是普通的?也许我应该只调整 IIS/web.config/whatever,SignalR 将蓬勃发展并开始完美地工作,即使通过蹩脚的移动互联网?

或者这是否意味着即使在从网络服务器单跳的 WiFi 上它也不能工作,我应该扔掉 SignalR,只写一些 JavaScript 来轮询 JSON 端点以获取新消息?

提前致谢!

0 投票
4 回答
4169 浏览

signalr - 信号器示例不起作用

我刚刚安装了信号器示例(使用 nuget 下载)

nuget 中的所有内容都安装得很好,它是一个干净的项目(只是为了测试示例),但我收到以下错误:

throw "SignalR: 必须在发送数据之前启动连接。在 .send() 之前调用 .start()";

0 投票
2 回答
3420 浏览

asp.net-mvc-3 - signalR 维护用户连接 ID

我正在尝试为用户维护一个连接 ID,我的意思是即使他刷新了他获得相同连接 ID 的页面

这是我到现在为止能做的

javascript部分

然后我创建了一个像这样继承 IConnectionIdFactory 的类

我在 Application_start() 中注册了上述类,如下所示

我的问题是每次在 CreateConnectionId 请求中调用 MyConnectionFactory 类。Cookies["srconnectionid"] 每次都为空,因此每次都为用户分配新的连接 ID。我只能找到一个帮助我维护连接 ID 的链接。它是http: //www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances

任何人都可以建议如何解决我的问题,或者是否有任何其他方法可以为同一用户重用连接 ID...?

Cookie 值是在客户端设置的。我已经尝试了 2 天。这将是很大的帮助

提前致谢

0 投票
2 回答
1706 浏览

chat - SignalR 出现 SignalR.Ninject 问题并覆盖 IConnectionIdFactory

我拥有 SignalR 的所有 Nuget 位,我正在尝试使用我自己的 clientID 以及 SignalR 附带的依赖注入容器用于我的所有其他存储库等。现在奇怪的是这个连接到集线器的jQuery失败了:

基本上,聊天对象变得未定义,就好像 SignalR 无法解析一样。一旦我尝试使用下面的代码覆盖 SignalR 的默认解析器,这种情况就开始发生。

我在这里想念什么?

我遇到的另一个问题是我不确定实现 IConnectionIdFactory 的 UserClientIDfactory 是否也能正常工作。

这是我 Global.asax 中的 MVC3 代码

最后,这是我的自定义 clientIDfactory 的代码

0 投票
3 回答
47704 浏览

asp.net - .NET 4.5 WebSockets 与 SignalR

我已经看到了用于 asp.net MVC 聊天应用程序的 signalR 与 html5 websockets,但它并没有 100% 回答我的问题,因为它基于 HTML5 WebSockets,Microsoft 可能在 .NET 4.5 中使用他们的 WebSocket 对象对其进行了扩展。

我想知道 WebSocket 功能是否确实与 SignalR 一样,并且在 WebSocket 不可用时回退到长轮询?微软肯定会在他们的技术方法中实施与 SignalR 相同的技术吗?

编辑:

对于其他对此感到疑惑的人,我发现此评论最有助于理解该场景以及我将使用 SignalR 的原因:

好吧,他们不是真的。到目前为止,IIS 和 ASP.NET 没有内置任何支持 WebSockets 的东西,因此 SignalR 项目必须自己构建它。既然微软正在提供管道 SignalR,可以很容易地切换到使用微软的实现,无论是补充还是代替他们自己的实现。SignalR 是对实现细节的抽象,WebScockets 类是实现细节

0 投票
2 回答
1104 浏览

asp.net-mvc-3 - 如何理解 signalR 概念

如何理解 signalR 的工作原理及其细节?那里没有太多的技术文档。

0 投票
3 回答
73007 浏览

c# - Node.Js + Socket.IO vs SignalR vs C# WebSocket 服务器

我目前有一个用 .Net 编写的 TCP 服务器应用程序,用于接收并向客户端提交消息。我正在考虑构建一个 Web 应用程序,因此需要通信层。

我已经构建了一个 Node.JS + Socket.IO 应用程序,它连接到我的 TCP 服务器,然后将通信推送到 Web 应用程序,一切正常。

我刚刚阅读了有关 SignalR 作为将其保留在 .Net 堆栈中的替代方案。

但是我也发现我可以编写一个 C# Websocket Server,一个基本的演示在这里

我假设这个基本服务器就是 SignalR,但显然它具有更多功能?

我要决定是我只是将我当前的 TCP 应用程序附加到一个 Websocket 服务器还是我走一个单独的 SignalR 或 Node.js 路由?出于对 SignalR 应用程序如何运行的兴趣,它是作为 Windows 服务、控制台应用程序还是 IIS 服务?

0 投票
1 回答
2607 浏览

signalr - SignalR .NET 客户端:无法从 Web 应用程序域内启动连接

我会尽量长话短说:

我想从我的应用程序中的核心程序集调用 Web 应用程序中集线器上的方法。原因是我有许多应用程序最终都会调用核心和触发事件(想想移动网络、管理站点、api 等)。我想使用 SignalR 在事件发生时通知桌面站点的用户。

为了解决这个问题,我创建了一个包含 4 个项目的解决方案。带有中心代理的核心项目。带有集线器的 Web 应用程序。另一个没有集线器的网络应用程序。最后是一个控制台应用程序。

如果我从控制台应用程序调用核心,并尝试使用代理向集线器客户端发送消息,一切正常。但是,如果我尝试调用核心并使用其中一个 Web 应用程序的代理,则执行会在调用 connection.Start() 时挂起:

SignalR.Client 的东西是否不打算在 Web 应用程序的应用程序域中使用?为什么它在控制台应用程序中按预期工作,而不是在 Web 应用程序中?


更新:我将我的尖峰连接到 SignalR 源中,当从其中一个 Web 应用程序运行时,执行挂起在 SignalR.Client.Connection 的第 130 行。这种连接的 _syncContext 是 AspNetSynchronizationContext 的一个实例,当调用它的 Post() 方法时,一切都停止了。

0 投票
5 回答
6158 浏览

azure-worker-roles - 在 Azure 辅助角色中使用 SignalR

我有一个 Azure 托管的 Web 应用程序,它与许多辅助角色实例一起工作。目前,Web 应用程序通过将消息放入 Azure 队列以供工作人员获取,从而将工作传递给这些工作人员。工作人员通过将消息放入“反馈”队列来传递状态和进度消息。目前,为了通知我的浏览器客户端进度,我在浏览器中对 MVC 控制器方法进行基于 ajax 的定期轮询调用,该方法依次读取 Azure“反馈”队列并将这些消息作为 json 返回给浏览器.

显然,对于这种笨拙的轮询/排队方法,SignalR 看起来是一个非常有吸引力的替代方案,但是当我们谈论需要发送的多个工作角色(而不是 Web 角色)时,我发现如何去做这件事的指导很少个人或所有客户的状态。

Clemens vasters 的 SignalR.WindowsAzureServiceBus看起来很棒,但最后留下了一个有点高和干燥,即缺乏一个很好的示例解决方案。

添加评论:从我目前的阅读来看,似乎无法通过 SignalR 方法从工作角色(与Web角色相反)直接通信到浏览器客户端。似乎工作人员必须使用队列与 Web 角色进行通信。这反过来又强制采用轮询方法,即必须轮询队列以获取来自工作角色的消息 - 此轮询必须源自(驱动)来自它出现的浏览器(如何在 Web 角色中设置轮询循环?)

总之,即使使用Clemens Vasters 的 SignalR.WindowsAzureServiceBus 横向扩展方法,SignalR 也无法处理从工作角色到浏览器的直接通信。

专家的任何意见将不胜感激。