2015-05-26 11 views
15

Ich habe Stunden des Scheuerns getan, versuchend herauszufinden, warum der websockets Transport nicht durch signalr auf meiner C# 4.5 Anwendung läuft, die auf Linux über Mono 4.0.1 läuft.SignalR und Websockets auf Mono

Referenzen in meinem Projekt:

  • Microsoft.Owin.Host.HttpListener
  • Microsoft.Owin.Host.SystemWeb

Gerade jetzt, ich versuche, herauszufinden, wo der Engpass das ist WebSockets von der Arbeit verhindert. Die Art, wie ich es verstehe, ist SystemWeb ist im Grunde ein selbst laufender Server, der die Httplistener nutzt, um auf einen Port für eine HTTP-Verbindung zu hören, die sie dann verarbeitet bis zu SystemWeb. Bekomme ich diesen Teil richtig?

Kann mir jemand in die richtige Richtung zu einem offenen Problem oder einem Bug-Tracker zeigen, wo dies gerade in der Entwicklung ist? Von dem, was ich sagen kann, gibt es einige Kernfunktionen in http.sys von this answer, die in Windows 8 benötigt werden und vorhanden sind. Gibt es Pläne, dies in Mono zu implementieren? Ich würde es vorziehen, keine Bibliothek von Drittanbietern zu bekommen, und diese in SignalR arbeiten zu lassen.

+0

Ich glaube, Sie Ihre Antwort finden Sie hier ... [http://stackoverflow.com/questions/21245994/running-signalr-net-client-on-linux-with-mono-possible][1] [1]: http://stackoverflow.com/questions/21245994/running-signalr-net-client-on-linux-with-mono-possible –

+0

Das Problem ist nicht SignalR zu arbeiten, es bekommt SignalR Websockets arbeiten. – FrankerZ

+0

Die erste Frage, die Ihnen in den Sinn kommt, ist, welche Version von Microsoft Server Sie auf dem Server ausführen, der Ihre SignalR Server-Anwendung hostet? –

Antwort

9

Ich habe vor etwa 3 Monaten ein ähnliches Projekt mit Angular 2 und Singnalr durchgeführt. Ich hoffe, die Web-Socket-Nutzung ist für Ihr Projekt nicht essentiell.

Wie Sie here eine der Xamarin Entwickler sehen erwähnt, es ist nicht so System.Web.WebSocket arbeitet in der Mono nicht umgesetzt, und sie planen es nicht diese Tage zu implementieren.

Ich glaube, es gibt eine Menge Arbeit mit Monos HTTP-Stack geht rechts jetzt und das muss wohl stabilisieren, bevor wir dieses besondere Problem gelöst sehen.

Ich schlage vor, dass Sie Ihre Arbeit mit aktuellen Mono weiterhin als signalr für WebSockets Rückfall hat es nicht ein großes Problem zu sein, zu gehen und wenn es umgesetzt wird Sie einfach aktualisieren Sie einfach Ihr Projekt auf Mono kann. Mit der Open-Source-Politik der derzeitigen MS glaube ich, dass es früher sein wird, als es sein sollte.

Wenn Sie die Websocket-Funktion für Ihr Projekt benötigen, sollten Sie das SignalR forkieren oder eine gegabelte Version finden, die eine 3rd-Party-Lösung verwendet. WebSocketListener ist wirklich beliebt und hat mehr Funktionen.

ich jemanden ermutigen würde interessiert SignalR Gabel und sehen, ob sie eine davon verwenden können xplat Implementierungen WebSockets es in ihre eigenen Gabel zum Laufen zu bringen.

Update:

Leider konnte ich keine Gabel von SignalR mit WebSocketListener finden, aber da es viele Gabeln hat, ist es schwer zu finden.

Soweit ich weiß Mono-Team stoppen Sie ziemlich alle Implementierung und konzentrierte sich auf ASP.Net vNext Implementierung Mono wie es ist open source.

+0

Ich bin mir nicht sicher, warum Sie auf die Open-Source-Richtlinie von Microsoft verweisen, aber die Microsoft-eigene WebSocket-Unterstützung bindet an http.sys (nur Windows). Also wird ihr Quellcode Mono in diesem Fall nicht helfen, es sei denn, sie werden später etwas mehr Aufwand betreiben. –

+0

Wenn Sie nach der vollen Prämie suchen, brauche ich auch Informationen über die Owin-Pipeline und ein bisschen mehr über die Monosituation. Was sind meine nächsten Schritte? Hat jemand eine Gabel erstellt oder in diesem Bereich gearbeitet? Ich erinnere mich, dass ich einige Commits für Mono gemacht habe, aber dann wieder zurückgenommen habe. Ist das bald geplant? SignalR war mit Fallbacks das Beste, und ich hasse es, auf eine völlig neue Plattform zuzugehen, um mit Websockets umzugehen. – FrankerZ

+0

ohh, ich habe das nicht beantwortet wegen Bounty, habe gerade deine Frage bemerkt. Ich habe leider keine Ahnung von OWIN-Pipeline. Bitte überprüfe mein Update in der Frage für den Rest. –