2014-05-13 52 views
0

一直在研究堆和毫無進展:( 試圖建立使用VB一個小的Web應用程序在2013年VS我 添加完所有SignalR資源,我的項目SignalR - 從服務器代碼調用消息

在客戶端每一個記錄在我的數據庫中的用戶名。

我想調用SignalR消息,某些用戶名的,從服務器端的代碼,而不是客戶端。首先,這可能嗎?(這是可能使用ReverseAJAX,但我選擇不使用)

如果可能的話,我怎麼去安博t設置SignalR Hub以允許我使用UserID發送消息?我不需要SQL的幫助,我可以做到這一點。

此外,JavaScript的是什麼,我需要堅持的要求?我猜我會在這段代碼中的某處需要用戶ID。

感謝堆。

+0

看到這個樣品。你可以改變它來使用你的userid,而不是http://techbrij.com/database-change-notifications-asp-net-signalr-sqldependency – Zaki

+0

這可能也有幫助,這是一個類似的問題,我有什麼:http:// stackoverflow .com/questions/16459994/update-ui-with-signalr-and-knockout-when-manually-updates -db – christiandev

+0

感謝您的回覆,但我沒有看到我可以使用我的用戶名的位置。 當數據庫更新時,我不需要觸發代碼。我只需要使用UserID數據庫字段將SR消息發送到該ID的客戶端。 – user3173098

回答

1

這是很有可能的。如果你看看這裏

http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#callfromoutsidehub

,你會發現「單用戶組」一節。這是版本2中向單個用戶ID發送消息的機制。本質上講,當建立了連接,你不必擔心堅持連接ID的關係,一個用戶ID自己添加的用戶ID可以通過組名(SYN。用戶ID)來訪問「組」。唯一的限制是,如果超過1個連接由相同的用戶建立的,與該用戶的所有設備將在同一組中,並因此將接收發送給它的任何消息...

還有另一部分上如何保留Web服務器上的SignalR上下文實例以向客戶端發出呼叫(如何調用客戶端方法並從Hub類外部管理組)

我沒有讀過有關SignalR團隊創建User Id方法的內容但我已經用上述方法取得了公平的成功,並且沒有深入研究。

希望這有助於

+0

謝謝,我會看看這個。 – user3173098

+0

還請記住,您不必從腳本發送任何特別的東西。如果您的.NET代碼已經過「身份驗證」並直接從ASP.NET主體中提取用戶名,則可以在您的.NET代碼中摘錄該用戶。很容易讓你開始滾動= D – Pepto

1

正如@Pepto提到,here它描述瞭如何到達集線器的引用,然後在你的服務器代碼中使用它。

爲特定用戶調用客戶端功能的簡單方法是在集線器中使用Clients.User("Username")

智能感知會告訴你,User()想要一個ID作爲參數,但是你應該傳遞用戶的用戶名,而你想調用的用戶的用戶名不是他的ID。

+0

嘿,我還沒有讀過這篇文章,但在你的文章中,你說用戶名應該使用不是ID?我很困惑你爲什麼這麼說。 UserID始終是唯一的,但用戶名不一定是唯一的。乾杯。 – user3173098

+0

這只是中心上的默認UserID提供程序的行爲,因爲用戶的用戶名可在請求的「IPrincipal.Identity.Name」上隨時獲得。見http://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections#IUserIdProvider既然你不能有兩個用戶使用相同的用戶名,這種識別用戶的方式比查詢數據庫的ID更有效。 – Tobias

+0

不夠公平,謝謝解釋。我對這篇大文章進行了詳細的介紹,它非常令人難以置信,因爲我首先必須弄清楚我需要哪些代碼,然後將所有C#轉換爲VB。 – user3173098

相關問題