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?

InformationsquelleAutor Ken Smith | 2012-11-16
Schreibe einen Kommentar