问题标签 [signalr.client]

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 投票
2 回答
2731 浏览

java - Android SignalR 应该实现为 Service 还是 IntentService?

在我的 Android 应用程序上,我正在实现 SignalR 连接 ( https://github.com/erizet/SignalA ) 以连接到集线器服务器以发送请求和接收响应。

我的代码示例如下:

还有发送位

发送和接收将跨活动发生,并且无论活动如何,都会随机发送一些响应,而且,只要应用程序正在运行(即使应用程序在后台运行)就应该打开连接,这就是为什么我希望将 signalA 连接实现为后台服务

问题是我应该将其实现为:

1 - 服务(http://developer.android.com/reference/android/app/Service.html

或者

2 - 意图服务(http://developer.android.com/training/run-background-service/create-service.html

请记住,我需要向服务发送字符串并从服务获取响应字符串。

如果有人能告诉我如何在代码中实现这种连接作为后台服务/意图服务,我将不胜感激。

谢谢阅读。

更新:

请参阅开发人员制作的这个演示活动,了解他如何实现 SignalA https://github.com/erizet/SignalA/blob/master/Demo/src/com/zsoft/SignalADemo/DemoActivity.java

问题是在这个演示活动中使用了 AQuery(我对此一无所知)。AQuery 是否一直在后台运行?问题是,SignalA 的最新更新提到了以下内容

我已经改变了交通工具。LongPolling 现在使用 basic-http-client 代替 Aquery 进行 http 通信。我已经删除了对 Aquery 的所有依赖项。

因此我不确定我是否应该关注这个演示活动

更新 2:

这是IntentService中最让我困惑的事情,OnHandleIntent方法在完成任务后调用stopSelf,而我实际上希望IntentService中的代码一直保持运行

protected abstract void onHandleIntent (Intent intent) 在 API 级别 3 中添加此方法在工作线程上调用,并请求处理。一次只处理一个 Intent,但处理发生在独立于其他应用程序逻辑运行的工作线程上。因此,如果这段代码需要很长时间,它会阻止对同一个 IntentService 的其他请求,但不会阻止其他任何请求。处理完所有请求后,IntentService 会自行停止,因此您不应调用 stopSelf()。

0 投票
1 回答
1405 浏览

c# - SignalR WPF 状态更改问题

我正在编写一个小 WPF 应用程序来测试一些 SignalR 代码。一切都从我写的东西开始,但我偶然发现了一些我不确定的东西。

我为事件创建了一个事件处理程序HubConnection StateChanged

用我的 Delegate 方法statusCallBack和方法;

现在我可能在这里遗漏了一些非常明显的东西,但是当StateChanged我在处理程序中检查ConnectionState.Connecting消息并将其输出到我的标签时,它工作正常。

然后,当 SignalR HubConnection 状态更改为ConnectionState.Connected并且我尝试调用委托时,WPF 应用程序就会锁定。

它将正常输出到控制台,并检查是否change.NewState == ConnectionState.Connected,然后将“hello”输出到控制台,但随后就冻结了。

如果我调试应用程序,当它进入 Connectedif语句时,对象change.NewStatechange.OldState在下面显示错误消息。

在此处输入图像描述

在此处查看大图。

我不知道为什么它在第一个 if 语句中起作用,而不是第二个。还有为什么它能够将正确的值输出到控制台?

即使我注释掉初始if语句以检查Connecting它仍然会在Connected.

0 投票
1 回答
9862 浏览

javascript - 客户端功能没有被调用 SignalR

控制器类 Hub 的定义位置

用于映射服务器 url 的控制台应用程序

客户页面

实际屏幕 屏幕 第一个选定类是用于映射服务器 url 的控制台应用程序类第二个选定类是定义集线器的控制器类 目录

当我创建一个调用 MyHub 的对象并从控制器调用它时,我遇到了一个问题,该函数被调用,但另一方面,当我按下屏幕上的发送按钮时,它调用相同的函数但输出也显示在页面上。请告诉我为什么会发生这种情况以及如何从控制器调用函数以便输出也显示在 HTMLpage 上。我想我没有指定它应该写入的集线器 URL,这就是它不调用客户端的原因当我直接从控制器类发送它而不是从客户端调用集线器函数时的辅助函数,因为在客户端聊天 URL 中指定了,我认为这就是为什么当我从客户端页面调用发送函数时,客户端添加消息被执行。我无法找到一种指定集线器地址的方法

当我按下屏幕上的发送按钮时,会显示此日志消息:SignalR:在集线器“MyHub”上触发客户端集线器事件“addMessage”。”。

但是,当我在“GetMonitoringProfileLiveLogChart”函数中直接从控制器调用它时,不会显示此日志消息。

SignalR 版本 1.1.3

0 投票
1 回答
263 浏览

signalr - Signalr - 将回调序列化为事件而不是函数调用?

在 Signalr 中,是否支持使用事件而不是回调。

在你拿起干草叉之前让我解释一下。

跟随这里的第一个例子

不会调用集线器代理的 addContosoChatMessageToPage(name, message),但会调度带有一些额外信息的 addContosoChatMessageToPage 事件。(不要求它是完全相同的 api 调用)

我问这一切的原因是因为

  1. 这与ELMbacon.js等功能性反应式编程框架一起工作得更好
  2. 我不想自己做这件事,本质上是创建自己的子框架。当然,我总是可以做 Clients.All.CreateEvent(name,params...) 我不断回调我的方法来创建这个事件
  3. 我实际上认为事件在某些情况下可以更好地分离关注点。

我疯了吗?这样的事情存在吗?

0 投票
1 回答
2000 浏览

javascript - 为什么我会收到错误消息:未知提供者:personH​​ubProvider <- personH​​ub

我正在尝试使用 angularjs、依赖注入、工厂和 signalR 集线器来解决问题,但我收到错误 Unknown provider: personH​​ubProvider <- personH​​ub,我无法弄清楚是什么原因造成的。

我的代码是这样的:

首先我声明模块:

它在 html 标记中使用ng-app="UCP"

然后我在 ucp 模块上为集线器设置做了一些配置,并创建了一个 signalRHub 工厂来获取集线器,而无需输入很多相同的代码:

然后,我创建另一个工厂,负责从服务器获取数据:

我将这个工厂注入到我的控制器中,这样我就可以执行调用以从服务器获取数据并将其放入提供在浏览器中显示数据的范围内:

当我打开网页时,我收到之前提到的错误:错误:未知提供者:personH​​ubProvider <- personH​​ub。

我认为创建 personH​​ub 工厂服务出了点问题,这反过来会导致控制器出现依赖注入错误。我的问题是,是什么导致了错误,我在创建 personH​​ub 工厂时做错了什么,如果是,我做错了什么?

0 投票
2 回答
2267 浏览

c# - 在 SignalR 和 ASP.NET MVC4 之间同步客户端状态(或者我什至应该使用 SignalR?)

背景:

这是我的项目:在 ASP.NET MVC4 Web 应用程序上,用户输入信息并发布到服务器。然后服务器开始运行一个长任务(从不到一秒到 20 分钟不等。通常大约 4 分钟。)

我不希望所有工作都发生在 Controller 操作中,否则用户将不得不等待它完成而没有关于正在发生的事情的反馈。所以我想将用户发送到状态页面并将服务器的更新发送到该页面。

当前部分解决方案:

到目前为止,这是我所拥有的:控制器使用长时间运行的操作启动一个任务,然后将用户引导到状态页面。当任务运行时,它会使用 SignalR 将消息发送回状态页面,并且页面会更新。

问题:

  1. SingalR 正在更新所有客户端,因此多个用户不能同时使用此应用程序。我看到 SignalR 可以向特定客户端发送消息,但是如何将客户端 ID 获取到控制器?SignalR 使访问会话变得困难(不可能?)。
  2. 如果任务在状态页面加载之前完成怎么办(或者如果在页面加载时更新之间存在暂停怎么办?)状态页面将没有关于任务的任何信息。同样,将状态存储在会话中会很好,但我似乎无法做到这一点。

有没有办法让 SignalR 和 ASP.NET 同步客户端状态?SignalR 是适合这项工作的工具吗?

0 投票
1 回答
678 浏览

signalr - SignalR 1.1.3 gets thousands of 404 responses trying to reconnect during IE Longpolling

I'm having an issue with SignalR that is causing IE (9) to send thousands of ping/reconnect attempts to the server within a second or two.

signalr/reconnect?transport=longPolling&connectionToken=(some long token here)...

It gets a 404 (along with the full 404 response)

and then does another ping: signalr/ping?_=(ID)

Which gets a "pong" response and then attempts another reconnect as above.

The issue is it tries this and fails a few thousand times (last test was 6,800+ ping/reconnects). Not only is this a lot of bad server talk, but it also chews through bandwidth pretty fast sending and receiving all these responses.

It finally ends up sending a signalr/negotiate which succeeds and stops the ping/reconnect madness

0 投票
1 回答
6468 浏览

asp.net-mvc-4 - 如何通过 SignalR(.NET 客户端)使用自定义基本身份验证?

有很多关于如何使用 SignalR 进行表单身份验证或 Windows 身份验证的信息。我有兴趣使用我自己的身份验证数据库。我使用 .NET 客户端是因为连接代理是一项服务,而不是背后有人支持的 Web 浏览器。理想情况下,我希望我的客户端代码使用:

我的服务器代码在集线器上使用 [Authorize] 并让 Context.User 可供我使用。所有通讯都通过 https,所以我不在乎纯文本。

我已经阅读了 asp.net基本身份验证指南,其中展示了如何使用 IHttpModule 覆盖身份验证机制。但是,当我在 HttpModule 中对代码进行断点时,似乎从未在来自 .NET SignalR 客户端的请求中设置“授权”标头。

我想要做的只是从客户端简单地传递一个用户名和一个密码,然后编写如何在服务器上进行身份验证的代码。有这么难吗?没有魔法。没有活动目录。只是我的认证。

我目前的工作方法是设置在 SignalR 级别解释的自定义标头(使用自定义 AuthorizeAttribute),但显然“正确的做法”不是在授权级别进行身份验证,而是让网络服务器执行在任何 SignalR 事情发生之前。

任何人都可以描述一个完整但简单的自定义身份验证的好程序吗?

0 投票
2 回答
382 浏览

c# - SignalR 如何将请求映射到集线器?

我很好奇 SignalR 如何将请求映射到集线器?

它如何选择要使用的集线器?请求中集线器的名称在哪里?

此外,它如何选择集线器中的哪个操作来处​​理请求?那是请求网址的一部分吗?

最后有没有办法利用这个管道(例如 IActionFilter、IHubSelector、IActionSelector)?

0 投票
0 回答
1695 浏览

asp.net - VS2010 中带有 Asp.net MVC 4.0 的 SignalR

我是 SignalR 的新手,我正在关注这篇关于在 VS2010 上使用 MVC 4.0 运行 SignalR 的文章。

我已经使用包管理器添加了所需的引用。但是,我无法添加对方法 RouteTable.Routes.MapHubs() 的调用,因为 MapHubs 选项不可用。我缺少哪些参考资料?

这些是我现在项目中的参考资料:

我还缺少其他东西吗?