樞紐方面,我有一個問題,我似乎在無法從ChangedEventHandler
新數據發送給連接的信號R的客戶。該文檔說,我可以用得到的樞紐方面: -SignalR解決從change事件處理
var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.addToList(insertedCustomer);
但是沒有被髮送到客戶端(檢查了小提琴手)或報告的任何錯誤。我onchange事件此刻正在從Application_Start
爲我創造一個概念證明接線。我要指出的輪轂確實工作的啓動,並從初始GetAll
呼叫
protected void Application_Start()
{
...
_sqlTableDependency.OnChanged += _sqlTableDependency_OnChanged;
_sqlTableDependency.Start();
...
}
private void _sqlTableDependency_OnChanged(object sender, RecordChangedEventArgs<BiddingText> e)
{
switch (e.ChangeType)
{
case ChangeType.Insert:
foreach (var insertedCustomer in e.ChangedEntities)
{
var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.addToList(insertedCustomer);
biddingTextList.Add(insertedCustomer);
}
break;
}
}
檢索數據。當我把一個斷點在輪轂上context
我得到我的ChatHub回來。
我的Javascript代碼:
$.connection.hub.url = "http://localhost:37185/signalr";
// Reference the auto-generated proxy for the hub.
var chat = $.connection.chatHub;
chat.client.initialText = function(data) {
var index;
//console.log(data.length);
for (index = 0; index < data.List.length; ++index) {
$('#list').append("<li>" + data.List[index].text + "</li>");
}
};
chat.client.addToList = function(data) {
console.log(data);
$('#list').append("<li>" + data.text + "</li>");
};
// Start the connection.
$.connection.hub.start({ jsonp: true }).done(function() {
chat.server.getAll(1831);
});
我集線器代碼:
public class ChatHub : Microsoft.AspNet.SignalR.Hub
{
private readonly IMediator mediator;
public ChatHub(IMediator mediator)
{
this.mediator = mediator;
}
public void GetAll(int saleId)
{
var model = mediator.Request(new BiddingTextQuery { SaleId = saleId});
Clients.Caller.initialText(model);
}
}
不知道這是否是相關的,但Clients.Connection.Identity
不同的是,每次我用GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
誰能幫助?
完美,我使用'SimpleInjector',在我的情況下只需要添加'GlobalHost.DependencyResolver = resolver;'從來沒有注意到任何文檔!歡呼聲matey,現在我欠你 – Rippo
我記得做了很多!研究和挖掘到底。最後,我相信大衛福勒幫我解決了最後的細節問題。 – Vidar