【问题标题】:Why does my SignalR app sometimes get disconnected为什么我的 SignalR 应用有时会断开连接
【发布时间】:2014-04-21 09:01:01
【问题描述】:

我正在像这样连接到 signalR 集线器:

    $scope.starthubD = function() {
        $.connection.hub.start().done(function () {
            $.connection.HubName.server.method(sessionId);
        });
    };

我收到这样的消息:

    $.connection.HubName.client.method= function(msg) {
        $scope.cars.push(msg);
    };

通过集线器,我开始了 10-12 个长时间运行的线程:

public class ProcessHub: Hub
{
        IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ProcessHub>();

        new Thread(() => new Process(connectionId, hubContext)).Start();
        new Thread(() => new Process2(connectionId, hubContext)).Start();
        new Thread(() => new Process3(connectionId, hubContext)).Start();
}

线程本身使用以下方式直接向客户端报告:

hubContext.Clients.Client(connectionId).report(data);

我遇到的问题是它大部分时间都有效,但有时我会收到此消息的断开连接:

http://domain.se/signalr/connect?transport=serverSentEvents&connectionTok…weVsQoXvUzH&connectionData=%5B%7B%22name%22%3A%22carcompare%22%7D%5D&tid=7 网络::ERR_CONNECTION_

【问题讨论】:

  • 你的服务器是否一直在运行?
  • 是的,当然它一直在运行。
  • 提供有关服务器操作系统的更多详细信息,您正在使用哪种传输并启用日志记录:asp.net/signalr/overview/signalr-20/hubs-api/…
  • 在 ERR_CONNECTION_ 之后不是缺少什么吗?例如ERR_CONNECTION_REFUSED

标签: c# asp.net-mvc signalr


【解决方案1】:

我发现了问题所在。其中一个线程抛出异常,导致与集线器的连接丢失。

【讨论】:

  • 虽然您解决了您的问题,但您应该提供更好的答案以可能帮助未来的访问者。你的代码在线程上产生了一个错误,导致断开连接。
  • 我的代码中什么导致了异常?这与指定的业务逻辑相关,我无法真正进入,因为它是题外话。但我可以说:任何类型的异常(一般)都会中断 SignalR 连接。
猜你喜欢
  • 2021-07-06
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 2017-10-07
相关资源
最近更新 更多