2015-01-02 2 views
0

Я пытаюсь подключиться к проекту 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. Что-то не хватает?

+0

Вы самостоятельно хостинг от второго проекта? http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host – Anders

+0

Нет Я не являюсь владельцем хостинга – EnderCode

+0

Но проект, который делает GetHubContext, похоже, является консольным приложением? Вы можете отключить только GetHubContext из того же Appdomain, на котором размещается служба signalr – Anders

ответ

0

У вас есть проект консоли и веб-хостинг-сигнал, правильный? Эти два будут работать под общими различными областями (отдельный процесс, отдельный домен приложения). Вы можете только позвонить GetHubContext из веб-проекта, но код, который это делает, может быть в отдельном проекте (Assemly), но он не может находиться в отложенном процессе/домене приложения.

Если вам нужен код, который делает GetHubContext в отдельном процессе по какой-то причине вам нужно использовать SOEM вид интеграции как ServiceBus, WCF и т.д.

 Смежные вопросы

  • Нет связанных вопросов^_^