12
我有以下JS工作:SignalR - 将参数发送到OnConnected?
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的枢纽?
更新:
SendMessage函数:
// 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());
}
}
我有点困惑 - 我使用字典存储连接,而不是组。我会发布我的SendMessage方法。 – RobVious
对不起,我从我自己的代码中拿到了。它应该工作,如果你改变你的OnConnected方法中的订阅的方法体 –
我还是有点困惑 - 我不会重写OnConnected吗?这也需要另一个往返请求来启动,对吗?而且 - 我不担心重新连接 - ChatHub用于专用页面,OtherHub用于导航栏通知。当访问聊天时,用户实际上将连接到两个集线器 - 我只是没有包括上述内容。现在更正。思考? – RobVious