Я пытаюсь подключиться к проекту My SignalR из другого проекта с использованием GetHubContext, но он просто не работает. вот код:SignalR GetHubContext не работает
первый проект
[HubName("DataHub")]
public class DataHub : Hub
{
int counter = 1;
public void Hello(String message)
{
Clients.All.addMessage(message);
}
public void getNewData(Dictionary<string,string> s)
{
Object result = new[] { s };
Clients.All.addnothing(result);
}
Второй проект:
class Class1
{
static void Main(string[] args)
{
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<Tape.DataHub>();
while(true){
Dictionary<string, string> data = new Dictionary<string, string> { };
data.Add("User", "PD");
data.Add("DeviceId","445");
data.Add("ID", "1");
Object result = new[] { data };
hubContext.Clients.All.addData(data);
System.Threading.Thread.Sleep(5000);
}
}
}
}
код Javascript для клиента
$.connection.hub.url = "http://localhost:57844/signalr";
var dataHub = $.connection.DataHub;
dataHub.client.addData = function (message) {
console.log(message);
var obj = message;
for (var i = 0; i < obj.length; i++)
//loops through the data and adds new data to the html page
}
$.connection.hub.start().done(function() {
console.log("connected");
}).fail(function (error) {
console.log('Invocation of start failed. Error: ' + error)
});
Клиент должен получить новые данные из class1 через концентратор signalr, который находится на другом классе, чем проект signalr. Но я не получаю никаких новых данных, клиент только подключается к DataHub. Что-то не хватает?
Вы самостоятельно хостинг от второго проекта? http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host – Anders
Нет Я не являюсь владельцем хостинга – EnderCode
Но проект, который делает GetHubContext, похоже, является консольным приложением? Вы можете отключить только GetHubContext из того же Appdomain, на котором размещается служба signalr – Anders