标签: signalr-hub

可以使用SignalR流式传输视频吗?

好吧,我正在尝试执行有关视频流的证明,我正在使用asp.net c#.我有点迷茫,你有什么想法或建议吗?

signalr signalr-hub signalr.client

22
推荐指数
2
解决办法
1万
查看次数

SignalR和HttpContext/Session

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

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

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

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

asp.net signalr signalr-hub

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

Signal与IHubProxy订阅之间的区别

界面中可用的OnSubscribe方法之间有什么区别IHubProxy.何时应该使用一个而不是另一个

c# signalr signalr-hub

19
推荐指数
1
解决办法
9791
查看次数

是否可以从 Postman 调用 SignalR Hub

我有一个带有 SignalR 集线器的 ASP .Net Core 2.2 Web API。是否可以使用 Postman 调用其方法之一(例如,SendMessageToAll)?问题是我只有 API - 没有前端 - 我需要测试。

我尝试将 URl 放到 Postman (api.mydomain.com/chatHub) 中的集线器,但后来我不确定如何构建主体。我知道 SignalR 最好使用 WebSockets,我不知道 PostMan 是否具有 WebSocket 功能。如果 WebSockets 不可用,我相信 SignalR 也可以执行 HTTP 请求,这是 Postman 可以做的。但我用的是什么身体?我是使用 HTTP GET 还是 POST?

我在 Postman 中看到有人在使用这个 body 的帖子:

{
    "Target": "SendMessageToGroup",
    "Arguments": [
        "groupA",
        "hello from server"
    ]
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试了相同的方法,但是当我在邮递员上单击“发送”时,我的集线器的 SendMessageToGroup 方法不会被触发。

在此处输入图片说明

谢谢

signalr signalr-hub signalr.client postman asp.net-core-webapi

19
推荐指数
3
解决办法
9780
查看次数

SignalR异常记录?

这是两个问题,但是:

  1. 为我的Hub设置顶级异常处理程序的最佳方法是什么?目前版本的SignalR似乎不可能

  2. 当我在Hub中抛出错误时,为什么这在客户端上实际上没有做任何事情?

    $ .connection.hub.error(function(){return alert("test");});

当我调试时,我可以看到我的错误方法被连线,但是当我在Hub上抛出异常时,我可以看到从来没有尝试调用我在上面设置的方法.唯一发生的事情是SignalR将错误发送到控制台.

为了记录,我可以很好地连接其他事件

//Called during exceptions just fine 
$.connection.hub.received(function() {
  return alert("Received Data");
});

//Seems to do nothing?
$.connection.hub.error(function() {
  return alert("Received Exception");
});
Run Code Online (Sandbox Code Playgroud)

javascript signalr signalr-hub

18
推荐指数
1
解决办法
6365
查看次数

SignalR中心构造函数何时被调用?

我正在尝试调试SignalR集线器,并注意到即使使用单个客户端,构造函数也会被多次调用.这是预期的行为吗?我期待构造函数只被调用一次用于类初始化,但我多次击中断点.

c# signalr signalr-hub

18
推荐指数
2
解决办法
6090
查看次数

SignalR:如果没有客户端方法,则不调用Hub OnConnected

我在SignalR写一个游戏.这个想法是你用你的笔记本电脑连接,它将用作"显示器",然后你连接智能手机,它将被用作"操纵杆".整个设置非常有效.

现在一切正常,我决定重构代码.我意识到操纵杆和显示器之间的关系是一种方式(显示器永远不需要将信息发送回操纵杆).因此我决定在操纵杆上不需要任何signalR可调用的客户端功能(例如,gameHub.client.joyStickMethod()在操纵杆js中没有用.

就在那时我发现了一些奇怪的东西

事实证明,public override Task OnConnected()除非我定义一个,否则不会调用我覆盖以处理不同类型的客户端(显示和操纵杆)的hub方法myHub.client.clientSideMethod().这是我正在处理的例子:

        var gameHub = $.connection.gameHub;
        gameHub.client.connection();
        $("#joystick").joystick({
            hub: gameHub
        });

        gameHub.client.activateJoystick = function () { };
        $.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
        $.connection.hub.start();   //this will invoke on connected
Run Code Online (Sandbox Code Playgroud)

你看到那个空的客户端方法?这就是为什么OnConnected在服务器端调用的原因.如果我删除该行代码,则不会调用它.

        var gameHub = $.connection.gameHub;
        gameHub.client.connection();
        $("#joystick").joystick({
            hub: gameHub 
        });

        //gameHub.client.activateJoystick = function () { };
        $.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
        $.connection.hub.start();   //this will invoke on connected
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为Hub上没有客户端方法.我可以RegistrateJoystick在Hub上添加一个方法并调用它,但我认为这种行为是出乎意料的.我的问题是:

有没有办法手动"连接"到集线器,以便OnConnect调用该方法?

javascript signalr signalr-hub signalr.client

17
推荐指数
1
解决办法
7761
查看次数

SignalR超时属性

我们遇到了这个指定不同超时属性的链接:https: //github.com/SignalR/SignalR/wiki/Configuring-SignalR

还有一个很好的帖子(什么时候重新连接signalR会出现?)关于SignalR客户端和SignalR服务器之间如何断开连接和重新连接.

只是为了重复上述帖子中的不同情况:

"当客户端脱机然后不久重新获得连接时,就会发生集线器重新连接.SignalR配置值很大程度上决定了以下示例的时间戳,因此不要逐字记录时间.

以下是几个涉及重新连接行为的示例及其结果(时间格式m:ss):

情况1

0:00 - 客户端连接到服务器,触发OnConnected

0:10 - 由于ISP问题,客户端失去连接(并意识到它失去了连接)

0:15 - 客户重获连接

0:16 - 触发OnReconnected事件

情况2

0:00 - 客户端连接到服务器,触发OnConnected

0:10 - 由于拔出以太网电缆,客户端失去连接(未意识到它已断开连接)

0:15 - 客户重获连接

这里可能发生两件事

答:0:16 - 没有任何反应,客户继续使用之前的连接

B:0:~45 - 客户端实现断开连接*

B:0:46-客户端转换到重新连接状态

B:0:47 - 客户端成功重新连接并触发OnReconnected事件.

情况3

0:00 - 客户端连接到服务器,触发OnConnected

0:10 - 由于拔出以太网电缆,客户端失去连接(未意识到它已断开连接)

0:~45 - 客户实现其断开连接*

0:46 - 客户端转换到重新连接状态

1:15 - 服务器确定客户端已经消失了太长时间然后忘记它,排队一个"断开连接"命令,让客户端接收它,如果它稍后重新连接.***

1:15 - OnDisconnect以1:16触发 - 客户重新获得连接

1:17 - 客户端进行"软"重新连接(不触发OnReconnected)

1:18 - 客户端检索"disconnect"命令

1:19 - 客户端调用"停止"并进行软断开(不触发OnDisconnected)

情况4

0:00 - 客户端连接到服务器,触发OnConnected

0:10 - …

signalr signalr-hub signalr.client

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

SignalR Client Hub上的On事件不会被调用

我似乎与SignalR的JS Client Hub有问题.

问题是'on'处理程序似乎不起作用 - 它不会产生错误,但不会接收服务器发送的任何信号.下面的代码显示了一个提取,我调用服务器(使用调用)工作正常 - 然后在服务器上我回调acceptHubData应该在客户端上获取但不是.

我的目标是当导航到页面时,每个页面将打开与特定集线器的连接,并在用户移动到另一个页面时释放此连接!

编辑:使用以下代码片段工作,但我想知道为什么下面的代码使用'on'事件不起作用!

    var superHub = $.connection.mySuperHub;

    superHub.client.acceptHubData = function (data) {
        $('<li>hello there' + data + '</li>').prependTo($('#ul1'))
    }

    $.connection.hub.start().done(function () {
        $('<li>done phase 1</li>').prependTo($('#ul1'))
    });
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激!

这是客户端代码(以js为单位)

$(document).ready(function () {

    var myHub;

    try {

        var connection = $.hubConnection();

        connection.start().done(function () {

            myHub = connection.createHubProxy("mySuperHub");

            myHub.on('acceptHubData', function (data) {
                alert(data);   // THIS IS NOT CALLED!
            });

            myHub.invoke('AcceptSignal', "hello from the client2");

        });

    }
    catch (e) {
        alert(e.message);
    }
});
Run Code Online (Sandbox Code Playgroud)

这是服务器代码:

[HubName("mySuperHub")]
public …
Run Code Online (Sandbox Code Playgroud)

signalr signalr-hub

17
推荐指数
1
解决办法
2万
查看次数

请求的性能计数器不是自定义计数器,必须初始化为ReadOnly."在RouteTable.Routes.MapHubs();

我在AspNet MVC 4应用程序中使用SignalR 1.1.2版本和Windsor Castle.我的问题是,自从我转移到较新的SignalR版本后,此错误消息显示出来.

"The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly."
Run Code Online (Sandbox Code Playgroud)

在线

    RouteTable.Routes.MapHubs();
Run Code Online (Sandbox Code Playgroud)

这是RegisterHubs类

public static class RegisterHubs
{
    public static void Start()
    {
        var signalrDependencyContainer = new WindsorContainer().Install(new HubsInstaller());
        var signalrDependency = new SignalrDependencyResolver(signalrDependencyContainer.Kernel);
        GlobalHost.DependencyResolver = signalrDependency;
        RouteTable.Routes.MapHubs();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些我在互联网上找到的东西,比如:

lodctr /R
cd C:\Windows\Inf\.NETFramework
lodctr corperfmonsymbols.ini
Run Code Online (Sandbox Code Playgroud)

但我仍然收到相同的错误消息.有任何想法吗?

我正在使用dotnet framework 4.5.

这是堆栈跟踪

at System.Diagnostics.PerformanceCounter.InitializeImpl()
Run Code Online (Sandbox Code Playgroud)

谢谢!

更新 我正在添加Drew请求的屏幕截图. 在此输入图像描述

在此输入图像描述

在此输入图像描述

c# asp.net signalr signalr-hub

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