WebSockets mit Rails über Rack und Event Machine integrieren

8

Ich habe eine asynchrone Version von Rails 3 erstellt, die ich in eine WebSocket-Implementierung integrieren möchte.

Ich benutze EventMachine, Ruby 1.9, Fibers und verschiedene em-aromatisierte Bibliotheken, wie von Illy Grigorik dokumentiert.

p>

Ich habe mir em-websocket als Handler für WebSocket-Verbindungen angeschaut, bin mir aber nicht sicher, wie ich das am besten anhängen soll in eine Rails App.

Im Idealfall funktioniert dies ähnlich wie bei node.js mit Express und Socket.io - eingehende Verbindungen sollten erkannt und an den WebSocket-Handler oder den regulären Rails-Stack gesendet werden, wie durch die HTTP-Header & amp; usw. .

TL; DR

  • WebSocket-Handler, der an eine vorhandene Rails-Anwendung angeschlossen wird
  • Versenden Sie eingehende WebSocket-Anforderungen transparent an Endpunkte in der App
Toby Hede 22.11.2010, 10:44
quelle

3 Antworten

5

Ich weiß, dass diese Frage alt ist, aber hoffentlich hilft diese Antwort denen, die hier von Google geleitet wurden.

Ich arbeite an einem Juwel, das die beiden Hauptkriterien der ursprünglichen Frage erfüllt. Der Edelstein heißt websocket-rails und wurde von Grund auf so entwickelt, dass die Verwendung von WebSockets in einer Rails-Anwendung unmöglich wird einfach. Es ist endlich eine stabile Version, aber es gibt eine Menge mehr Funktionalität, die ich glaube, dass es braucht.

Momentan ist die Ereignisbehandlung sehr einfach. Es gibt eine events.rb -Datei, in der clientseitige Ereignisse Controlleraktionen zugeordnet werden, die der routes.rb -Datei ähneln. Alle Anforderungen an /websocket werden an den integrierten WebSocket-Server übergeben, ohne dass ein separater Serverprozess erforderlich ist.

Das ehrgeizigere Ziel des Projekts ist es, Rails zu einem traditionelleren MVC-Muster zu bewegen, bei dem Ereignisse auf dem Client-Browser zur Verarbeitung und Aktualisierung eines Modells auf den Server gelangen und auf dem Client Ereignisse auslösen, um die gerenderte Darstellung zu aktualisieren von diesem Modell.

Jede Rückmeldung wäre willkommen.

    
Dan Knox 03.06.2012 22:35
quelle
2

Besuche Skinny .

Sie müssen Thin verwenden, aber Sie können eine HTTP-Anforderung mit mittlerer Geschwindigkeit aktualisieren. Ich benutze es in Sinatra-Apps, aber es sollte genauso gut in Rails verwendet werden.

    
sj26 30.05.2011 04:11
quelle
1

Vielleicht versuchen Sie socky ? Im Moment ist es das Beste und es ist ziemlich einfach, es mit Rails (2 und 3) zu integrieren.

    
Bernard Potocki 22.11.2010 18:17
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset Funktioniert 'min-width' nicht in Form 'input [type="button"]' Elementen?