Я не могу дать вам точный ответ на вашу проблему, потому что короткий фрагмент кода и объяснение меньше, чем информативный, но то, что я сделал, воспроизводит все решение, в котором у меня не было проблем.
Просто чтобы прояснить вопрос:
see i have two separate applications SignalR1 app, SignalR2 app as i told and every body knows two apps willl have two separate client , hub parts here i need to call ChatHubIn Hub present in SignalR2 app from Hub part of SignalR1 app and from there i need to send messages to all clients in SignalR2 app
Это трудно переварить выше, так что я сделал это создать два проекта; один веб-форму (SignalR1, который по существу сервер/хост) и один MVC (SignalR2 клиент)
![enter image description here](https://i.stack.imgur.com/8EWwa.png)
Без этого было очень трудно, веб-форму проекта я установил полный стек signalR, я хотел его быть сервером как таковым.
В рамках проекта MVC я установил клиент SignalR JS и SignalR.Net клиент, дающий мне возможность подключиться к хосту.
Большинство Важно установить/включить Корс, который должен быть установлен на хосте: Microsoft.AspNet.Cors Install-Package -Version 5.2.3
Разрешение CORS в классе запуска:
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
EnableJSONP = true
};
map.RunSignalR(hubConfiguration);
});
}
может не только проект MVC получать сообщения, теперь у меня есть возможность вести огонь метод на Хаб
Conn выполнения над каждым к хозяину:
<script src="~/Scripts/jquery-1.6.4.js"></script>
<script src="~/Scripts/jquery.signalR-2.2.0.js"></script>
<script src="http://localhost:45569/signalr/hubs"></script>
<script>
$(document).ready(function() {
var chatHub = $.connection.chatHub;
$.connection.hub.url = "http://localhost:45569/signalr";
// Declare a function on the chat hub so the server can invoke it
// Create a function that the hub can call to broadcast messages.
chatHub.client.broadcastMessage = function (name, message) {
// Html encode display name and message.
var encodedName = $('<div />').text(name).html();
var encodedMsg = $('<div />').text(message).html();
// Add the message to the page.
$('#discussion').append('<li><strong>' + encodedName
+ '</strong>: ' + encodedMsg + '</li>');
};
$.connection.hub.start(function() {
//We can also fire back :-) Happy days
});
});
</script>
Мы можем сделать это в C# тоже !:
var hubConnection = new HubConnection("http://localhost:45569/");
IHubProxy chatHubProxy = hubConnection.CreateHubProxy("chatHub");
hubConnection.Start().Wait();
chatHubProxy .Invoke("Send", "name", "message");
Теперь, если я установить полный пакет SignalR на MVC, я мог бы назвать свой хаб позвонить другому:
public class OtherChatHub : Hub
{
public void Send(string name, string message)
{
var hubConnection = new HubConnection("http://localhost:45569/");
IHubProxy chatHubProxy = hubConnection.CreateHubProxy("chatHub");
hubConnection.Start().Wait();
chatHubProxy .Invoke("Send", "name", "message");
}
}
// EDIT
Благодаря уровню требуется код, чтобы получить минимальную рабочую нагрузку слишком много для этого Q. Поэтому я решил добавить в GitHub для загрузки и узнать не просто использовать точный код.
SignalRTwoWay-GitHub
Очень трудно понять проблему, только один метод ... Что такое «ChatHubIn»? Также лучшим сценарием для этого будет сигнал хозяина-хозяина и подключить два приложения. –
hey thnx для ответа, а «ChatHubIn» - это концентратор, который присутствует в приложении SignalR2, и этот код принадлежит к SignalR1 app HUb, и я пытаюсь вызвать «ChatHubIn». – Ray
Извините, если явно, но делает ли приложение Signalr1 и, соответственно, «Приложение Signal2», относятся к фактическим различным версиям signalr? Или это просто вы их называете? – rdoubleui