smart | Webentwicklung
Alles rund um HTML5, PHP, WordPress & Co.

WebSocket-Verbindung mit Ruby on Rails herstellen

22. April 2012
Stephan
Ruby on Rails

In einem vorherigen Artikel hatte ich bereits gezeigt, wie man einen WebSocket-Server auf Basis von Ruby-EventMachine implementieren kann und wie Clients mit diesem Server kommunizieren können.

Als Ergänzung dazu möchte ich nun zeigen, wie ihr eine WebSocket-Verbindung zwischen Ruby on Rails und einem WebSocket-Server herstellen könnt. Ein Vorteil solch einer WebSocket-Verbindung liegt darin, dass ihr dann z.B. mittels Ruby on Rails an alle Clients schnell und ohne unnötigen HTTP-Overhead Nachrichten schicken könnt.

Beispielsweise könntet ihr, nachdem ein neuer Client sich am System (Ruby on Rails) angemeldet hat, alle anderen angemeldeten Clients darüber informieren.

Voraussetzung für Ruby on Rails WebSocket-Verbindung

Um mittels Ruby on Rails eine Verbindung zu einem WebSocket-Server herzustellen, nutzen wir die Ruby-EventMachine-Erweiterung em-websocket-client. Weiterhin nutzen wir als Webserver Thin, da dieser auf Ruby-EventMachine basiert.

Ruby on Rails WebSocket-Initializer erstellen

Ziel soll es sein, dass wir innerhalb von Ruby on Rails ein globales WebSocket-Objekt haben, über welches wir Nachrichten zum WebSocket-Server senden können. Hierfür erstellen wir uns einfach eine weitere Initializer-Datei im Verzeichnis config/initializers mit dem Namen websocket:

Ruby on Rails WebSocket-Initializer

Beim Start von Ruby on Rails bzw. des Webservers wird der Inhalt/Code der Datei ausgeführt und eine WebSocket-Verbindung zum angegebenen WebSocket-Server hergestellt. Der Code dazu sieht wie folgt aus:

EM.next_tick do
    $webSocket = EventMachine::WebSocketClient.connect("ws://localhost:8080/")
end

Über die globale Variable $webSocket haben wir nun also einen globalen Zugriff auf unsere WebSocket-Verbindung.

WebSocket-Nachricht mit Ruby on Rails versenden

Innerhalb von Ruby on Rails können wir nun ganz einfach Nachrichten zum WebSocket-Server senden:

require 'em-websocket-client'
[...]
message = 'Tom hat sich angemeldet!'
$webSocket.send_msg message.to_s

Der WebSocket-Server könnte diese empfangene Nachricht dann an alle verbundenen Clients weiterleiten.

Fazit

Dieser Artikel hat euch gezeigt, wie ihr eine WebSocket-Verbindung mit Ruby on Rails auf einfache Weise herstellen könnt.

Erwähnt sei auch, dass wir eine bidirektionale Verbindung hergestellt haben und es möglich ist, über unser WebSocket-Objekt auch Nachrichten vom WebSocket-Server zu empfangen.

Habt ihr schon Erfahrungen mit WebSockets und Ruby on Rails gemacht?

Kommentare  
0 Kommentare vorhanden
0 Trackbacks/Pingbacks vorhanden
Du bist herzlich eingeladen auch ein Kommentar zu hinterlassen!
Kommentar schreiben

Vielen Dank für dein Kommentar!