Ich habe ein einfaches SingulaR-Beispiel, das ich zu einer älteren ASP.Net MVC-Anwendung hinzugefügt habe.Was bewirkt, dass SignalR beim Verbinden net :: ERR_CONNECTION_RESET empfängt?
Hier sind die verschiedenen Teile:
OWIN Startup Klasse
[assembly: OwinStartup(typeof (Startup))]
namespace MyApp.Web
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
SignalR Hub
using System.Collections.Generic;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace MyApp.Web
{
[HubName("podService")]
public class PodServiceHub : Hub
{
public PodServiceHub()
{
;
}
public IEnumerable<string> GetMessages()
{
return new[] {"blah", "blah", "blah"};
}
}
}
serverseitige Fassade
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace MyApp.Web
{
public class PodService
{
PodService(IHubConnectionContext<dynamic> clients)
{
Clients = clients;
}
public PodService()
: this(GlobalHost.ConnectionManager.GetHubContext<PodServiceHub>().Clients)
{
}
IHubConnectionContext<dynamic> Clients { get; set; }
public void SendMessageToClient(string message)
{
Clients.All.doSomething(message);
}
}
}
Teile Start Javascript:
var podService = $.connection.podService;
...
$.extend(podService.client, {
doSomething: function(message) {
console.log("received message:" + message);
}
});
// test
$.connection.hub.start()
.done(function() {
podService.server.getMessages()
.done(function(messages) {
console.log("received message:" + message);
});
});
Innerhalb einer der Controller von der ersten Seite aufgerufen:
_podService.SendMessageToClient("Hello from the server!");
Bei der Anwendung ausgeführt wird, wird der folgende Fehler in der Konsole angezeigt der Chrome-Entwicklungstools:
WebSocket-Verbindung zu 'ws: // localhost: 62025/signager /? Verbinden transport = WebSockets & client = 1,5 & connectionToken = 02LJFqBcRBWKXAOlaSwgMPWG0epV7AFl19gNjFCvA0dxD2QH8% 2BC9V028Ehu8fYAFN% 2FthPv65JZKfK2MgCEdihCJ0A2dMyENOcdPkhDzEwNB2WQ1X4QXe1fiZAyMbkZ1b & connection =% 5B% 7B% 22name% 22% 3A% 22podservice% 22% 7D% 5D & tid = 6' fehlgeschlagen: Fehler bei der WebSocket Handshake : net :: ERR_CONNECTION_RESET
Nach diesem Fehler kehrt jedoch podService.server.getMessages() mit der Nachricht vom Server [blah "," blah "," blah "] zur Konsole zurück und anschließend die doSomething client function wird aufgerufen, indem "empfangene Nachricht: Hallo vom Server!" gedruckt wird.
Die Anrufe vom Client und vom Server übertragen Daten, daher scheint dieser Fehler die App nicht zu beschädigen. Es scheint jedoch ein Problem zu sein. Der obige Code basiert auf dem Beispielcode, der von dem Microsoft.AspNet.SignalR.Sample NuGet-Paket generiert wird, das das gleiche Verhalten nicht anzeigt. Der einzige Unterschied, den ich zwischen meinem Beispiel und dem NuGet-basierten Beispiel kenne, ist, dass ich dies zu einer alten MVC-App im Vergleich zu einer reinen OWIN-basierten App hinzugefügt habe. Basierend auf einem Kommentar, den ich gelesen habe on this SO question sollte dies kein Problem sein.
Also, was ist falsch mit diesem Beispiel Verwendung und/oder was könnte die Verbindung zurückgesetzt verursachen?
Haben Sie jemals eine Lösung für Ihr Problem gefunden? Ich habe das gleiche ... – Dunken