【发布时间】:2020-05-07 09:21:25
【问题描述】:
我正在编写一个聊天应用程序。我使用Angular 6 和.Net Core 3.1.
看了很多文档还是不明白哪里出错了。
My Hub Class
public class ChatHub : Hub
{
private static List<ConnectedUser> _connectedUsers = new List<ConnectedUser>();
public override Task OnConnectedAsync()
{
var username = Context.GetHttpContext().Request.Query["username"];
var status = _connectedUsers.FirstOrDefault(x => x.Username == username);
if (status == null)
{
_connectedUsers.Add(new ConnectedUser
{
ConnId = Context.ConnectionId,
Username = username
});
}
return base.OnConnectedAsync();
}
...
我有一个列表,其中保存了我的Hub Class 中连接的用户的connection id 信息。当用户连接时,我会添加到此列表中。
我在下面的Private Chat Function 操作。
public void PrivateChat(string toUser,string fromUser,string message)
{
_connectedUsers.ForEach(val =>
{
if(val.Username == toUser)
Clients.User(val.ConnId).SendAsync("receiveMessage", message,fromUser);
});
}
但是,我无法返回到我想要的用户。
你在Angular这样使用它
this._hubConnection.on('receiveMessage', (message,fromUser) => {
console.log(message , "+" , fromUser);
}
);
【问题讨论】: