So habe ich wegstecken versucht, SignalR zu bekommen, um mit meiner Web-API-Instanz zu arbeiten, die OWIN und Authentifizierung verwendete. Nachdem ich CORS (dank SO Hilfe) herausgefunden habe, bin ich fast da.Falscher Pfad zu SignalR generiert auf Client
Mein Web-Client schlägt mit einem Javascript-Fehler auf der Konsole fehl.
http://localhost:45325/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&_=1460577212205 404 (Not Found)
, wenn ich diese URL nehmen und es in einem Browser sicher genug bekomme ich einen 404
Fehler. Allerdings, wenn ich /signalr/
auf den Pfad als solche hinzufügen ...
http://localhost:45325/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&_=1460577212205
ich eine richtige JSON-Antwort mit der SignalR connectionid
und alles ...
{
"Url": "/signalr",
"ConnectionToken": "<token here>",
"ConnectionId": "0bf84c7a-0a28-4da9-bb9f-551de894cf0e",
"KeepAliveTimeout": 20,
"DisconnectTimeout": 30,
"ConnectionTimeout": 110,
"TryWebSockets": true,
"ProtocolVersion": "1.5",
"TransportConnectTimeout": 5,
"LongPollDelay": 0
}
So sieht es aus, als ob alles funktioniert Abgesehen von der Tatsache, dass die URL, die der Client zur Verbindung mit dem SignalR-Hub generiert, die /signalr
nicht enthält.
Hier ist mein Client-Seite Javascript, das mit dem Hub verbindet. Wo kann ich angeben, dass der Pfad /signalr
enthalten muss? Weil ich dachte, dass ich schon war ...
<script src="scripts/jquery-2.2.2.min.js"></script>
<script src="scripts/jquery.signalR-2.2.0.js"></script>
<script>
(function ($) {
$(function() {
var connection = $.hubConnection('/signalr/', {useDefaultPath: false});
var myHubProxy = connection.createHubProxy('MyHub');
myHubProxy.on('notify', function (username) {
console.log(username + ' has logged in');
alert(username + ' has logged in');
});
connection.url = 'http://localhost:45325';
connection.start()
.done(function() {
alert('Connected to MyHub: Connection ID = ' + connection.id);
})
.fail(function(e) {
console.log('Connection error: ' + e);
});
});
})(jQuery);
</script>
Sie werden feststellen, dass ich nicht <script src="signalr/hubs"></script>
enthalten waren. Das liegt daran, dass ich den Proxy selbst erstellt habe, anstatt mich auf den automatisch generierten Proxy zu verlassen.