标签: signalr

IE 11 + SignalR无法正常工作

在IE 11中使用signalR时会发生奇怪的行为.场景:

我们有一些调度程序类型的功能,其中调度程序执行某些操作,而另一个用户可以实时查看更新(查询).发送的参数很好,可以在IE客户端进行更新,而无需打开开发人员控制台.

但是一个不起作用的方法(performUpdate- 获取查询结果 - 这是服务器>客户端调用,而不是客户端>服务器>客户端) - 永远不会被调用.当开发者控制台打开时,它只会得到打电话.

这是我尝试过的:

为什么JavaScript只在IE中打开开发人员工具一次后才有效?

SignalR:在IE9下,客户端无法接收消息,直到我点击F12 !!!!

SignalR客户端在AngularJs控制器中不起作用

一些代码片段

调度员方面

在下拉列表更改时,我们获取当前选定的值并通过网络发送更新.(这很好).

$('#Selector').on('change', function(){
   var variable = $('#SomeField').val();
   ...
   liveBatchHub.server.updateParameters(variable, ....);
});
Run Code Online (Sandbox Code Playgroud)

服务器端

当调度程序搜索时,我们会有一些服务器端代码发送已运行搜索的通知,并告诉客户端提取结果.

public void Update(string userId, Guid bId)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext<LiveBatchViewHub>();
            context.Clients.User(userId).performUpdate(bId);
        }
Run Code Online (Sandbox Code Playgroud)

客户端(实时更新的查看者)

除非开发者工具是开放的,否则永远不会调用

liveBatchHub.client.performUpdate = function (id) {
                    //perform update here
                    update(id);
                };
Run Code Online (Sandbox Code Playgroud)

编辑

一些可能有用的信息(我不确定它为什么会产生影响)但这只会在我做服务器>客户端调用时发生.当调度程序更改搜索参数时,更新是客户端>服务器>客户端或调度程序客户端>服务器>查看器客户端,这似乎有效.单击搜索后,搜索管道中的服务将调用performUpdate服务器端(server> viewer-client).不确定这是否重要?

编辑2和最终解决方案

眼睛充血,我意识到我遗漏了这个问题的一个关键部分:我们在这个页面上也使用了角度.猜猜我已经盯着它看了太久而把它留了出去 - 抱歉.我给了JDupont答案,因为他在正确的轨道上:缓存.但不是jQuery的ajax缓存,角度$ http.

就这样,没有人不得不花费数天/晚的时间将头撞在桌子上,最终的解决方案是禁用使用angulars $ http的ajax调用缓存.

取自这里:

myModule.config(['$httpProvider', function($httpProvider) {
    //initialize get if not there …
Run Code Online (Sandbox Code Playgroud)

iis asp.net-mvc internet-explorer signalr

21
推荐指数
2
解决办法
7611
查看次数

将SignalR用于桌面应用程序是否正确?

SignalR适用于Windows桌面应用程序(winforms/wpf)吗?

使用SignalR与Windows桌面应用程序有什么优缺点?

有任何性能考虑因素吗?

我想在服务器和许多客户端之间建立实时连接.连接将是不变的.

.net c# wpf winforms signalr

21
推荐指数
3
解决办法
2万
查看次数

SignalR和HttpContext/Session

我理解为什么SignalR不允许你访问HttpContext.但是,这对我们来说是个问题.让我解释:

我们的应用程序是一个多租户应用程序,用户在登录时选择环境.这基本上在HttpSession中注册了ConnectionStringName.在我们的SignalR Hub中,我们需要访问数据库Disconnect.但这是不可能的,因为此时我们没有HttpContext,无法确定要写入的环境.

任何人都可以向我们提出如何解决这个问题的建议吗?我们有点卡在这一点上.

编辑:如果您的解决方案在负载平衡环境中工作,则为奖励积分.

asp.net signalr signalr-hub

20
推荐指数
4
解决办法
2万
查看次数

SignalR:如何将数据发送到IConnected.Connect()

Connect()IConnected接口上实现该方法以向正确的组添加新连接.除了一件事之外,这很有效:为了将用户添加到正确的组,我需要发送一个值以在此方法中读取.我尝试将属性添加到客户端集线器:

var uIHub = $.connection.uIHub;
uIHub.SessionType = "Edit";
Run Code Online (Sandbox Code Playgroud)

但是这个Connect方法无法访问:

if (string.IsNullOrEmpty(Caller.SessionType) || Caller.SessionType == "Edit") {
     sessionId = WAFContext.EditSession.SessionId.ToString();                
} else {
     sessionId = WAFContext.ViewSession.SessionId.ToString();
}
Groups.Add(Context.ConnectionId, sessionId);
Run Code Online (Sandbox Code Playgroud)

Caller.SessionType 永远是空的.

关于如何解决这个问题的任何建议?

signalr

20
推荐指数
1
解决办法
8670
查看次数

SignalR.Redis如何在引擎盖下工作?

除了阅读github中的代码之外,是否有关于SignalR.Redis包如何工作的白皮书类型的文档?具体来说,我想知道它为Redis添加了哪些键,更新/删除策略等.当我在Redis中查看时,我看到的是下一个调用中指定的一个键(即"SignalR.Redis.Sample"):

GlobalHost.DependencyResolver.UseRedis(server, Int32.Parse(port), password, "SignalR.Redis.Sample");
Run Code Online (Sandbox Code Playgroud)

这把钥匙似乎只是雷迪斯的一个柜台.我假设正在创建其他密钥并快速删除,以方便连接到Redis的每个应用服务器之间的消息.

redis signalr

20
推荐指数
1
解决办法
5269
查看次数

SignalR .Net客户端:如何向组发送消息?

我正在使用SignalR Wiki Getting Started Hubs页面中的示例聊天应用程序.我已经扩展它以添加组支持,它工作正常.

但是,现在我想从外部控制台应用程序向组发送消息.这是我的控制台应用程序的代码,下面是我的代码组.如何从代理向组发送消息?可能吗?

// Console App
using System;
using Microsoft.AspNet.SignalR.Client.Hubs;

namespace SignalrNetClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // Connect to the service
            var connection = new HubConnection("http://localhost:50116");
            var chatHub = connection.CreateHubProxy("Chat");

            // Print the message when it comes in
            connection.Received += data => Console.WriteLine(data);

            // Start the connection
            connection.Start().Wait();

            chatHub.Invoke("Send", "Hey there!");

            string line = null;
            while ((line = Console.ReadLine()) != null)
            {
                // Send a message to the server
                connection.Send(line).Wait();
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr

20
推荐指数
1
解决办法
3万
查看次数

SignalR plus NancyFX:一个简单但功能良好的例子

例如,有一些NancyFX与SignalR集成的例子

由于我刚刚开始,我想要一个简单,工作良好的规范示例,我可以从中工作.来自微软的聊天示例的nancy版本可以正常运行.

谢谢

nancy signalr

20
推荐指数
1
解决办法
8854
查看次数

如何为SignalR生成API文档

有没有办法做到这一点?

我有swashbuckle为我的其他API生成内容但我不相信它适用于SignalR.

c# code-documentation signalr swashbuckle

20
推荐指数
2
解决办法
2103
查看次数

@aspnet/signalr 与 @microsoft/signalr javascript 库

@aspnet/signalr 与 @microsoft/signalr javascript 库之间有什么区别?

两者似乎都对 DotNetCore SignalR 有效,两者似乎都很活跃。在一些教程中,我找到了 @aspnet/signalr,而在 DotNet 文档中,他们使用了 @microsoft/signalr。

有 2 个不同的 Microsoft 官方库似乎有点奇怪,但找不到任何关于不同之处的解释

javascript signalr

20
推荐指数
1
解决办法
3189
查看次数

使用SignalR和传输模式长轮询时,Asp.net会话永不过期

我们有一个使用SignalR作为其通知机制的Web应用程序.问题是当我们使用IE浏览我们的Web应用程序时,SignalR使用Long Polling作为其传输类型,因此将请求发送回我们的Web服务器,因此Session永远不会过期,无论多长时间浏览器空闲.

我们在想,也许我们可以在Global.asax中捕获请求并查看它们是否来自SingalR并将会话超时设置为剩余时间(我不认为这是一个简单的解决方案).

我们缺少其他任何解决方案吗?

asp.net session internet-explorer long-polling signalr

19
推荐指数
2
解决办法
1895
查看次数