So... ASP.NET MVC und WebSockets?
Ich habe eine Anwendung in MVC 3 und ich bin auf der Suche hinzufügen, WebSockets (mit fallback auf Kometen) zu.
Habe ich etwas recherchiert und ich fand heraus, den Kometen, der Teil ist ziemlich einfach und ich würde viel lieber es selbst tun. Nur AsyncControllers und ein ziemlich einfaches bit der js ist alles, was erforderlich ist, behandeln die langlebigen ajax-Anfragen.
Nun, im Fall von WebSocket, beginnen die Dinge zu schmutzig. Ich habe ein paar Bibliotheken, aber meistens scheinen, um eine web-server (daher brauchen einen anderen host oder port) des eigenen und hören Sie zu, ws-Protokoll-Anforderungen gibt. Dies ist beispielsweise der Fall bei SuperWebSocket, die schien nett auf den ersten, aber hatte dieses "ich bin ein web-server" - Problem (das ist völlig in Ordnung, natürlich, aber ich möchte lieber vermeiden).
Dann sah ich "PingIt" oder so ähnlich, ich kann nicht finden den link nun.., ich habe die source auf einem anderen computer, wenn. Dieser HAT auf einem Endgerät ausgeführt werden, die in mvc, aber ich wusste nicht ganz wie die Weise, in der er behandelt Dinge, wie es dauert, um ein IDisposable-Objekt und durch Reflektor schafft es, ein javascript-Stück, das gerendert wird, die in dem client, die sehr verschmutzt sind mit Ihrer Bibliothek, die die Namen, die ich habe wirklich kein Interesse daran, und es fühlte sich wie eine Menge, es wurde geworfen, gegen das, was ich wünschen könnte, welche Art von geht gegen meine Ansicht, wie eine Seite dargestellt werden soll, wie (speziell jetzt, wo ich arbeiten bin auf MVC, die ziemlich viel bedeutet, ich kann code sauber, unaufdringlich, html-Seiten).
Im Grunde, was ich will, ist mein Endpunkte werden so etwas wie:
domain.com/rt/comet
domain.com/rt/Buchse
eher als
domain.com/rt/comet
domain.com:81/
Also: ist es möglich, zu erhalten websocket-verbindungen (und tun das handshaking und was auch immer getan werden muss) auf einen Endpunkt innerhalb einer asp.net MVC-Anwendung controller, vielmehr als das einrichten einer tcplistener irgendwo?
Dies würde auch mir helfen, meine Kometen-code ein wenig näher an meine websocket-code
Soll ich sagen ich bin ernsthaft neu in der gesamten comet/websockets Sache, also ich weiß nicht wirklich viel (oder überhaupt) von dem Protokoll, ich verstehe, wie man Kometen funktionieren, aber nicht so viel in websockets, obwohl ich habe gelesen und verstanden die Grundlagen, um die wesentliche.
Also: bitte lassen Sie mich wissen, wenn das, was ich verlange ist Weg
- Sie sollten wirklich einen Blick auf SignalR.
- SignalR für den Sieg. Es wird blow your socks off, mir zu Vertrauen. lostinthegc.wordpress.com/2011/09/01/...
- Komet schlecht, SignalR gut.
- zu viel Diablo 3?
- Nee nur etwas Lesen, das erinnerte mich an das alte napster/metallica "- Bier good, napster bad' - cartoon : )
- Kasse Einfachen WebSocket-in asp.net MVC, es ist einfach und sollte ausreichend sein, wenn der browser WebSockets unterstützt. Dieses gute Beispiel blogs.msdn.microsoft.com/youssefm/2012/07/17/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach nur Zustimmen mit den Kommentaren und ein paar links. SignalR ist der Weg zu gehen.
Website: http://signalr.net/ und http://www.asp.net/signalr
Code: https://github.com/SignalR/SignalR
Nuget:
Install-Package Microsoft.AspNet.SignalR -pre
Gute Ansatzpunkte:
Kostenloses E-Book http://www.eduardopires.net.br/Repositorio/SignalR_eBook.pdf
http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx
http://www.dotnetcurry.com/ShowArticle.aspx?ID=780
http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx
Video von einem der Macher: http://vimeo.com/43659069 <--[Menge information!]
Als ein Bezugspunkt für diesen thread WebSockets - ich möchte Sie zu beachten, dass auf den ersten Blick, WebSockets sieht aus wie die offensichtliche Wahl. Die API ist so konzipiert, um einen bi-direktionalen Kommunikationskanal zwischen browser und server über eine einzelne TCP-socket. Es wurde von der IETF standardisiert, und die Letzte Version von Chrome, Firefox, IE und Opera-Browser unterstützen WebSockets. Es ist entworfen, um Bandbreite minimieren den Verwaltungsaufwand durch die Reduzierung von HTTP-Nachricht overhead. So, was ist nicht zu mögen?
Wie die vermeintliche Wunderwaffe, die Dinge sind nicht immer was Sie scheinen. Viele Probleme vorhanden:
Browser-Unterstützung: Juni 2012, nur 47.64% von Browsern, die derzeit im Einsatz wirklich unterstützen WebSockets http://caniuse.com/websockets - das bedeutet, Dass, egal wie gut WebSockets angezeigt wird, müssen Sie noch einen zweiten "fallback" - Lösung zur Unterstützung der Mehrheit der Internet-Nutzer. Und da die meisten "fallback" - Lösungen beinhalten Flash, du bist immer noch das Glück auf iOS und andere mobile Geräte.
Lesen Sie mehr über WebSockets in der Realität von diesem blog-post: Sind HTML5-WebSockets-Gateway-und Server-das Allheilmittel für die Echtzeit-Datenübertragung
Browser-Unterstützung-Update: Mai 2019, 96.77% der Browser, die derzeit im Einsatz wirklich unterstützen WebSockets http://caniuse.com/websockets
Sorry, es ist nicht so einfach. Die verschiedenen Browser Verhalten sich unterschiedlich und führen Sie besser mit unterschiedlichen Techniken, XMLHttpRequest, XDomainRequest -, ActiveX-Objekte, Multpart ersetzen, Long-Polling, Streaming. Weil dies, und die Tatsache, es gibt keine vorgeschriebene Skillung für diese Lösungen, Der Komet ist nur ein hack. Server Gesendeten Ereignisse (EventSource-API) und WebSockets wurden von Grund auf neu entworfen, bieten die effiziente und standardisierte Weise pushen von Daten vom server an den client, und viel wichtiger WebSockets wurden speziell für Echtzeit-bi-direktionale Kommunikation zwischen einem client und einem server.
Windows Server 8 wird die systemeigene Unterstützung für WebSockets. Bis dann müssen Sie eine separate "web-server" wie XSockets oder SuperWebSockets (die Sie haben bereits verwiesen). Es gibt auch Alchemie WebSockets und Fleck.
Sondern weil Microsoft der Fahrt SignalR vorwärts, es ist den meisten wahrscheinlich voll zu bekommen Traktion und sogar Teil der standard ASP.NET MVC-stack (es kann bereits geplant werden, ich bin ein wenig hinter der Zeit mit MS-Zeug). SignalR ist der WebSocket-support (oder ein Modul) und mit fallbacks zu transport-Mechanismen, die Unterstützung der browser des Benutzers.
Weitere Informationen über selbst-gehostete Lösungen (es gibt noch ein paar mehr .NET/IIS-Optionen) schauen Sie sich diese selbst gehostet Echtzeit-services.
Ich bin sehr daran interessiert, zu sehen, wie IIS-Schuppen, wenn der Umgang mit tausenden von persistenten verbindungen - es wurde neu geschrieben für Windows Server 8? Wie schnell bis du Notwendigkeit der Einführung eines load-balancer-und horizontal-Skala? Wenn das ist nicht etwas, das Sie daran interessiert sind, sich Gedanken über dann würd ich schauen, ein gehostet Echtzeit-service.