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