signalr - SignalR 获取连接 ID
问题描述
我正在第一次尝试使用 SignalR 向用户提供长时间运行进程的进度反馈
我找到了一些 .Net Core 示例,但最接近的似乎是使用旧版本的 SignalR。
我正在努力获得“ConnectionId”。我已经阅读了许多 SO 问题和答案,但似乎仍然无法获得正确的值。
这是我从我找到的演示项目中获得的代码:
// Helper functions added for test purposes
function openConnection() {
progressConnection = new signalR.HubConnectionBuilder().withUrl("/progressDemo").build();
debugger;
progressConnection
.start()
.then(() => {
progressConnectionId = progressConnection.connection.connectionId;
$("#connId").html(progressConnectionId);
$("#startButton").removeAttr("disabled");
$("#dropConnectionButton").removeAttr("disabled");
$("#openConnectionButton").attr("disabled", "disabled");
$("#msg").html("Connection established");
console.log("Connection Id: " + progressConnectionId);
})
.catch(() => {
$("#msg").html("Error while establishing connection");
});
}
错误是在线上未定义“connectionId”:
progressConnectionId = progressConnection.connection.connectionId;
任何帮助将不胜感激!
解决方案
好的...这很明显,现在我已经解决了:)
我的中心现在看起来像这样:
public override Task OnConnectedAsync()
{
//Count++;
Interlocked.Increment(ref Count);
base.OnConnectedAsync();
Clients.All.SendAsync("updateCount", Count);
Clients.All.SendAsync("connected", Context.ConnectionId);
return Task.CompletedTask;
}
重要的线路是发回连接 ID 的线路
Clients.All.SendAsync("connected", Context.ConnectionId);
然后在客户端监听“已连接”并设置 connectionId 变量:
progressConnection.on("connected", (connectionId) => {
progressConnectionId = connectionId;
$("#connId").html(progressConnectionId);
$("#startButton").removeAttr("disabled");
$("#dropConnectionButton").removeAttr("disabled");
$("#openConnectionButton").attr("disabled", "disabled");
$("#msg").html("Connection established");
console.log("Connection Id: " + progressConnectionId);
});
推荐阅读
- java - 如何在 Apache Poi 中使用公式保存 excel?
- javascript - JS - 有没有办法在不丢失默认功能的情况下将 CSS 样式添加到 JSON 控制台日志消息?
- asp.net - IApplicationBuilder.UseBasePath 奇怪的行为?
- python - 在 python3 中导入超出顶级包失败
- java - 我收到一些关于 java 中无法访问的代码的错误,如何修复它。我用日食霓虹灯
- bash - fswatch 和 ffmpeg 中的输出文件扩展名
- qt - qInstallMessageHandler() 不返回文件行、文件名、函数名
- c# - 是否可以从 C# 链表中提取子列表?
- security - 获取托管在 IP 地址上的所有域
- wso2 - WSO2 API update REST API throwing exception