You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Dec 7, 2018. It is now read-only.
Even though Celluloid and EventMachine are mutually exclusive, when Reel is installed, EventMachine comes along, because whether used or not, websocket-driver and other faye-* gems bring in an EventMachine dependency. This has affected actioncable also, through faye-* dependencies, and it is being addressed in this thread: rails/actioncable#16
In our next release bringing in HTTP/2 ( #198 ) we need to also refactor out dependencies which bring in EventMachine, whether it be used or not, and provide complete Celluloid::IO support for websockets, by refactoring the faye-* gems in parallel with this next release.
This will be achieved one of two ways:
Working with @jcoglan to remove EventMachine in a version of his gems.
Fork and refactor the faye-* gems as Celluloid::WebSocket which would also solve our need to bring celluloid-websocket-client back up to speed with the faye-* gems.
faye-websocket depends on EM but websocket-driver does not. The intention was always for websocket-driver to allow easy WebSocket integration into other I/O stacks.
Thanks @jcoglan, that makes sense and explains what I've been seeing. EM is only listed as a development dependency for websocket-driver I now see. And agreed, @Asmod4n. I've seen and worked on several implementations like that. Thinking out loud...
Maybe we ought to extract all websocket code from Reel, and create reel-websocket both for client and server uses, fleshing out WebSocket::Driver in pure Celluloid::IO rather than focusing on the Rack approach being primary... of hijacking.
We can support hijacking in the reel-rack handler, but reel-websocketought to be a pure ruby, pure I/O base for that. Thenreel-websocketcan be used byReelitself andAngelo... half as a standardized "Celluloid WebSocket" and half as aWebSocket::Driver` abstraction layer.
Even though
Celluloid
andEventMachine
are mutually exclusive, whenReel
is installed,EventMachine
comes along, because whether used or not,websocket-driver
and otherfaye-*
gems bring in anEventMachine
dependency. This has affectedactioncable
also, throughfaye-*
dependencies, and it is being addressed in this thread: rails/actioncable#16In our next release bringing in
HTTP/2
( #198 ) we need to also refactor out dependencies which bring inEventMachine
, whether it be used or not, and provide completeCelluloid::IO
support for websockets, by refactoring thefaye-*
gems in parallel with this next release.This will be achieved one of two ways:
EventMachine
in a version of his gems.faye-*
gems asCelluloid::WebSocket
which would also solve our need to bringcelluloid-websocket-client
back up to speed with thefaye-*
gems./cc: @tarcieri, @dhh, @jcoglan, @kenichi, @jasonayre
The text was updated successfully, but these errors were encountered: