我在ASP.NET Core 2.1上尝试了最新的SignalR。我有基本的应用程序,但它现在很快就会超时。我看到了这个错误 -
错误:连接断开且出现错误'错误:服务器超时已过,未收到来自服务器的消息。'。
此超时设置可以在哪里更改?我尝试了文档here,但没有关于超时的信息。 我在Windows 10的开发环境中运行并使用JavaScript客户端。
编辑:启用客户端日志记录后插入图像。
编辑2:链接到page,其中包含有关旧版SignalR版本的超时。
答案 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>