我正在编写聊天应用程序。我使用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();
}
...
我有一个列表,其中将连接的用户的connection id
信息保留在我的Hub Class
中。当用户连接时,我将添加到此列表。
我在下面的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);
}
);
答案 0 :(得分:1)
您应该使用
Clients.Clients(val.ConnId).SendAsync("receiveMessage", message,fromUser);