Я создал сервер SignalR, веб-клиент и мобильное приложение, созданное с помощью PhoneGap Build. Когда я запускаю приложение PhoneGap с помощью lite-server, PhoneGap CLI или настольного приложения PhoneGap, SignalR безупречно работает между веб-клиентом и приложением PhoneGap. Это включает использование мобильного приложения PhoneGap для подключения к приложению PhoneGap Desktop. Единственный раз, когда это не удается, - это когда я собираю его с помощью PhoneGap Build и устанавливаю APK на устройство. У меня нет объяснения этой ошибке.
Я обработал CORS через WEB.CONFIG сервера. Это простое приложение ASP.NET, в котором есть только файл запуска OWIN для настройки SignalR и класса Hub.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE, TOKEN" />
<add name="Access-Control-Allow-Credentials" value="false"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Раздражает то, что ошибка, возникающая при сбое $ .connection.hub.start, - это просто «Ошибка: ошибка во время запроса согласования».
Когда срабатывает событие 'deviceready', я вызываю initiateSignalR ()
var appConfig = {
'serverUrl': "http://wolf-signalrserver.azurewebsites.net"
}
var initiateSignalR = function(){
if ($.signalR) {
}
var username = prompt("username");
var success = `
<div class ="serverMessage">
<span>--- WELCOME, ${username} ---</span>
</div>
`
$('#chatbox').append(success)
$.connection.hub.logging = true
$.connection.hub.qs = { 'username': username }
$.connection.hub.url = appConfig.serverUrl + "/signalr";
var chatHub = $.connection.chatHub
chatHub.client.broadcastMessage = function (name, message) {
console.log("Data Incoming ---- Name: " + name + " Message: " + message);
var message = `
<div class="row">
<span class="col-sm-2">${name}:</span>
<span class="col-sm-9"> ${message}</span>
</div>
`
$('#chatbox').append(message)
}
$('#messageButton').on('click', function () {
chatHub.server.send(username, $('#messageBox').val())
})
$('#messageForm').on('submit', function (e) {
e.preventDefault();
chatHub.server.send(username, $('#messageBox').val())
})
$.connection.hub.start({ withCredentials: false, jsonp: true })
.done(function () {
console.log("Connected successfully to SignalR");
var success = `
<div class ="serverMessage">
<span>--- Successfully connected to the server ---</span>
</div>
`
$('#chatbox').append(success)
})
.fail(function (err) {
console.log("Unable to connect to SignalR")
alert(err);
})
}
Здесь у меня есть репозиторий git: https://github.com/PhilWolf91/SignalR
Я понимаю, что здесь есть масса вопросов, но ни у одного из них нет подробного ответа на то, как они это исправили. Пример: SignalR. Net Client выходит из строя с ошибкой сервера 500 на устройстве, на симуляторе работает нормально