SignalR-js-client zu sein scheint, ignoriert die url port
Ich versuche zusammen ein einfaches "Hello World" - Anwendung im Stil mit SignalR. Die etwas erschwerender Faktor ist, dass der SignalR hubs müssen selbst gehostet, nicht in IIS/ASP.NET. Ich habe die server-Seite arbeiten, so weit ich erzählen kann, und es verfügbar ist auf port 8080, aber ich habe Probleme mit der Verdrahtung der client. Das problem, das ich bin, stoßen sich gegen das im moment ist, dass der SignalR-client zu sein scheint, ignorieren Sie den port an die URL, die ich angeben.
Speziell, ich habe diesen code hier:
<head runat="server">
<script type="text/javascript" src="/Scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/Scripts/json2.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.signalR-0.5.3.js"></script>
<script type="text/javascript" src="http://<%=Request.Url.Host %>:8080/signalr/hubs"></script>
<title>SignalR Test</title>
</head>
<body>
<script type="text/javascript">
$(function () {
//Wire up the client to the SignalR server on the same host
//as the source of this page, but on port 8080.
$.connection.url = "http://<%=Request.Url.Host %>:8080/signalr";
var roomHub = $.connection.roomHub;
$('#echoButton').click(function () {
roomHub.echo($('#echoButton').val())
.error(function (err) {
alert(err);
});
});
$.connection.hub.start({ transport: 'auto', xdomain: true })
.done(function () {
console.log('Connected.');
})
.fail(function (e) {
console.log('Unable to connect:' + e);
});
});
</script>
Den :8080/signalr/hubs Skript erfolgreich geladen wurde, und es sieht gut aus, D. H., es hat die definition für die roomHub
im es, so weiß ich, dass der server hochgefahren ist und läuft.
Jedoch, wenn $.connection.hub.start()
läuft, es scheint, wie es sollte versuchen zu öffnen, eine Verbindung für eine URL so etwas wie http://app.dev.alanta.com:8080/signalr/signalr/negotiate?=1353072553935. Stattdessen Firebug sagt mir, dass es ignoriert die 8080 Teil, und stattdessen versuchen, zu verhandeln, eine Verbindung mit der URL http://app.dev.alanta.com/signalr/signalr/negotiate?=1353072553935. Und natürlich klappt das nicht - es gibt keine SignalR-service lauscht auf port 80, nur die normale web-server - so schlägt es fehl, mit der Meldung "Verbindung Nicht möglich:SignalR: Fehler während der Verhandlung verlangen".
Ich sollte auch beachten, dass in der jquery.signalR-0.5.3.js Datei, der code, der analysiert die Verbindung hat in der Tat scheinen zu ignorieren, port:
//Resolve the full url
parser.href = connection.url;
if (!parser.protocol || parser.protocol === ":") {
connection.protocol = window.document.location.protocol;
connection.host = window.document.location.host;
connection.baseUrl = connection.protocol + "//" + connection.host;
}
else {
connection.protocol = parser.protocol;
connection.host = parser.host;
connection.baseUrl = parser.protocol + "//" + parser.host;
}
//Set the websocket protocol
connection.wsProtocol = connection.protocol === "https:" ? "wss://" : "ws://";
Ist das ein bug? Oder habe ich etwas falsch verstanden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich könnte schwören, ich hätte das versucht und es hat nicht funktioniert, aber als ich die Problembehandlung einige mehr, ich habe die URL-Zuordnung-von daher:
Zu diesem:
Haben und sicher zu sein, das ist, wie es ist dokumentiert hier. Ich dachte, dass ich es gesehen dokumentiert der erste Weg, irgendwo, aber ich finde es jetzt nicht. Naja. Kreide diese bis zu meinen, nicht genug Aufmerksamkeit.