我创建了一个 SignalR 服务器、一个 Web 客户端和一个使用 PhoneGap Build 构建的移动应用程序。当我使用 lite-server、PhoneGap CLI 或 PhoneGap 桌面应用程序启动 PhoneGap 应用程序时,SignalR 在 Web 客户端和 PhoneGap 应用程序之间完美运行。这包括使用 PhoneGap 移动应用程序连接到 PhoneGap 桌面应用程序。唯一一次失败是当我使用 PhoneGap Build 构建它并在设备上安装 APK 时。我对此错误没有任何解释。
我已经通过服务器的 WEB.CONFIG 处理了 CORS。它是一个普通的 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'事件触发时,我调用initialSignalR()
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 repo:https ://github.com/PhilWolf91/SignalR
我意识到这里有很多问题,但没有一个人对他们如何修复它有详细的答案。例如:SignalR .Net 客户端在设备上失败,出现 500 服务器错误,在模拟器上工作正常