【发布时间】:2021-09-08 05:10:18
【问题描述】:
英语不是我的母语
我对 signalrHub 的客户端实现有疑问。
当我从 connection.start() 调用 removeConnectionID...
ajax 调用执行并带我进行测试操作
但是当我从 connection.on("diss", ...
调用 removeConnectionID
(OnDisconnectedAsync)
什么都没有发生,我没有收到任何错误
这是我的 ChatHub 中心
public string GetConnectionId()
{
return Context.ConnectionId;
}
public override Task OnConnectedAsync()
{
// Groups.AddToGroupAsync(Context.ConnectionId, name);
return base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await Clients.Client(GetConnectionId()).SendAsync("diss", Context.ConnectionId);
await base.OnDisconnectedAsync(exception);
}
} 这是我的js代码
var connection = new signalR.HubConnectionBuilder()
.withUrl("/chatt", {
accessTokenFactory: () => "testing"
})
.build();
connection.start().then(function () {
connection.invoke('GetConnectionId')
.then(function (connectionId) {
//alert(connectionId);
removeConnectionID(connectionId);
})
}).catch(err => console.error(err));
connection.on("diss", function(connectionId) {
removeConnectionID(connectionId);
//console.log(connectionId);
});
async function removeConnectionID(id) {
await $.get("/Chat/Test") ;
}
我尝试从 connection.on("diss", ...
向所有客户端发送 console.log
(OnDisconnectedAsync),它运行良好
并尝试从 connection.start() 调用相同的函数并且函数有效。
我认为问题是集线器在操作完成之前关闭连接但不知道如何解决它!
任何帮助表示赞赏!
【问题讨论】:
标签: .net ajax .net-core signalr signalr.client