【发布时间】:2021-11-23 19:55:54
【问题描述】:
我有以下 JS 工作:
var chat = $.connection.appHub;
我的应用有一个单独的中心 AppHub,它处理两种类型的通知 - Chat 和 Other。我使用的是单个集线器,因为我需要随时访问所有连接。
我需要能够通过以下方式告诉OnConnected 它是哪种类型:
[Authorize]
public class AppHub : Hub {
private readonly static ConnectionMapping<string> _chatConnections =
new ConnectionMapping<string>();
private readonly static ConnectionMapping<string> _navbarConnections =
new ConnectionMapping<string>();
public override Task OnConnected(bool isChat) { // here
string user = Context.User.Identity.Name;
if (isChat){
_chatConnections.Add(user, Context.ConnectionId);
_navbarConnections.Add(user, Context.ConnectionId);
} else{
_navbarConnections.Add(user, Context.ConnectionId);
}
}
}
理想情况下的用法是这样的:
var chat = $.connection.appHub(true);
如何将该参数从 javascript 传递到集线器?
更新:
发送消息:
// will have another for OtherMessage
public void SendChatMessage(string who, ChatMessageViewModel message) {
message.HtmlContent = _compiler.Transform(message.HtmlContent);
foreach (var connectionId in _chatConnections.GetConnections(who)) {
Clients.Client(connectionId).addChatMessage(JsonConvert.SerializeObject(message).SanitizeData());
}
}
【问题讨论】:
标签: signalr signalr-hub