如何在ASP.NET Core SignalR v2.1中增加超时设置?

时间:2018-05-14 18:34:31

标签: c# signalr asp.net-core-2.0 asp.net-core-signalr

我在ASP.NET Core 2.1上尝试了最新的SignalR。我有基本的应用程序,但它现在很快就会超时。我看到了这个错误 -

  

错误:连接断开且出现错误'错误:服务器超时已过,未收到来自服务器的消息。'。

此超时设置可以在哪里更改?我尝试了文档here,但没有关于超时的信息。 我在Windows 10的开发环境中运行并使用JavaScript客户端。

编辑:启用客户端日志记录后插入图像。

enter image description here

编辑2:链接到page,其中包含有关旧版SignalR版本的超时。

2 个答案:

答案 0 :(得分:4)

针对将来可能会来到这里的人:

以下是增加Javascript客户端超时的方法

hubConnection.serverTimeoutInMilliseconds = 100000; // 100 second

But also take a look at this link,然后在下面阅读我的评论:

如果signalR断开连接,则应尝试重新建立连接。连接可能由于其他一些原因而断开,包括用户交换网络。例如,如果用户正在使用手机并连接到家庭/办公室wifi,但先退出,然后再连接到蜂窝数据连接。

要重新连接,您可以使用以下命令(对我来说就像是护身符):

// re-establish the connection if connection dropped
connection.onclose(() => setTimeout(startSignalRConnection(connection), 5000));

其中startSignalRConnection是:

const startSignalRConnection = connection => connection.start()
  .then(() => console.info('Websocket Connection Established'))
  .catch(err => console.error('SignalR Connection Error: ', err));

连接是

const connection = new HubConnectionBuilder()
  .withUrl(connectionHub, options)
  .withHubProtocol(protocol)
  .build();

答案 1 :(得分:0)

在startup.cs

<html>
<head>
    <title> html - css (1) </title>
    <link rel="stylesheet" type="text/css" href=css1.css>

    <script language = "javascript" type = "text/javascript">
        function f(x) {
            document.getElementById("id1").src = x;
        }
    </script>
</head>

<body>

    <center><img id=id1></center>
    <!--<script language = "javascript" type = "text/javascript">
        document.getElementById("id1").src = "./redflowers.jpg";
    </script>-->

    <br/> <br/>

    <form style="text-align: center;" method=POST action=htmlcss1.html>
        <input type=submit value="red flowers" onClick=f("./redflowers.jpg"); />
        <input type=submit value="white flowers" onClick=f("./whiteflowers.jpg"); />
    </form>

</body>
</html>