Anfang 2016 habe ich für ActionCable einen kleinen Chat geschrieben und die Technologie in einer Präsentation vorgestellt. Die Präsentation findet sich auf SlideShare:
https://www.slideshare.net/secret/wERP4uZfbphnfr
Die Präsentation baut noch auf rails5.0.0.beta3 auf. Habe das jetzt auf 5.0.0.1 geändert. Der Quelltext ist auf github hinterlegt:
https://github.com/StMoelter/rails5-chat-example/tree/rails-5.0.0.1
Eine SQL Datenbank wird nicht benötigt, hier ist noch eine sqlite3 hinterlegt. Allerdings benötigt die Queue für ActionCable einen Redis-Server. Um einen Redis zu starten benutze ich (auf Xubuntu) ein Docker Container:
docker run --rm -p127.0.0.1:6379:6379 redis:alpine
Möchte man den Chat-Server im lokalen Netzwerk ausprobieren, so ist der Rails-Server an 0.0.0.0 zu binden:
bundle exec rails s -b 0.0.0.0
ist da der richtige Startbefehl. Das setzt natürlich ein erfolgreiches ‚bundle‘ vorraus. Die hier benutze Ruby Version ist 2.3.1.
ActionCable hat einen Sicherheitsmechanismus, so dass sich nur bestimmte Netzwerke oder URLs verbinden können. Standardmäßig ist das der ‚localhost‘. Damit die Websocketverbindung im lokalen Netzwerk erlaubt ist habe ich in config/environments/development.rb in Zeile 63:
config.action_cable.allowed_request_origins = [ /http:\/\/.*/ ]
hinzugefügt.
Habe das mal in 2 Browsern auf dem Rechner und auf dem Mobile-Phone geöffnet:
Viel Spass beim Ausprobieren, Docker Container folgen.