У нас есть сервер SignalR. Net Framework, который обслуживает Windows, а также веб-клиентов.
Для веб-клиентов мы используем библиотеку Javascript, предоставленную для SignalR, и мы ее используем для нашего Angular приложения.
Проблема для следующего сценария.
Если отправителем является windows приложение, а получателем является веб-приложение, веб-приложение не получит сообщение, если веб-приложение не щелкнет На кнопку отправки сообщения у нас есть.
Тот же сценарий с веб-к windows. Если веб-приложение отправляет сообщение, оно принимается только тогда, когда приложение windows снова отправляет сообщение.
Оба используют один и тот же концентратор, присоединились к одной группе.
При проверке я обнаружил, что это сообщение go отправляет на сервер, однако получение сообщения запускается только при вызове отправляемого сообщения.
Web to Web и Windows to Windows приложение работает без проблем.
Пожалуйста сообщите мне, если требуется дополнительная информация.
Windows Код для подключения к концентратору:
_hubConnection = new HubConnection(signalRHubAddress);
//We Add SAML Token into the header as hub is secured by SAML.
_hubConnection.Credentials = CredentialCache.DefaultCredentials;
_hubConnection.Closed += OnDisconnected;
_hubConnection.Reconnecting += OnReconnecting;
_hubConnection.Error += OnError;
_hubConnection.StateChanged += OnStateChanged;
_hubProxy = _hubConnection.CreateHubProxy(applicationHub);
_hubProxy["environmentName"] = "Environment";
_hubConnection.Start();
_hubProxy.On<string>("JoinGroupMessage", msg => ProcessJoinGroupMessage(msg,false));
_hubProxy.On<string>("ReJoinGroupMessage", msg => ProcessJoinGroupMessage(msg,true));
_hubProxy.On<string>("LeaveGroupMessage", msg => ProcessLeaveGroupMessage(msg));
_hubProxy.On<string>("ReceiveMessage", msg => ProcessReceiveMessage(msg));
Код веб-клиента:
$.ajax({
url: hubParam.homeUrl,
type: 'Post',
dataType: "json",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
data: {
SAMLToken: token
},
success: function (Id) {
myHub.assertionId = Id;
myHub.connection = getConnection(hubParam.hubUrl);
myHub.hubProxy = getHubProxy(myHub.connection, hubParam.hubName);
myHub.hubProxy.on(clientFuncName, function (msg) {
callbackFunc(msg);
});
myHub.connection.start().done(function () {
console.log(resources.connectionStarted);
})
.fail(function (err) {
console.log(resources.connectionFailed + err.toString());
});
}
getConnection = function(hubUrl) {
if (myHub.connection == null || myHub.connection === 'undefined') {
myHub.connection = $.hubConnection(hubUrl);
myHub.connection.qs = {
'version': myHub.version
};
}
else if(myHub.connection.state === 4) {
myHub.connection.start();
}
return myHub.connection;
};
getHubProxy = function (hubConn, hubName) {
if (myHub.hubProxy == null || myHub.hubProxy === 'undefined') {
myHub.hubProxy = hubConn.createHubProxy(hubName);
}
return myHub.hubProxy;
};
Спасибо, Вацал