aboutsummaryrefslogtreecommitdiffstats
path: root/lib/action_cable/server.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2015-02-05 20:43:51 +0530
committerPratik Naik <pratiknaik@gmail.com>2015-02-05 20:43:51 +0530
commit41e4396a5549399eb808d74086cb6f4b9471b882 (patch)
tree7a3d9769ed2e59f31732d42181d2f49c1f8b5cdb /lib/action_cable/server.rb
parentb67b19756418ac0508502a95bd591e75a0d3376a (diff)
downloadrails-41e4396a5549399eb808d74086cb6f4b9471b882.tar.gz
rails-41e4396a5549399eb808d74086cb6f4b9471b882.tar.bz2
rails-41e4396a5549399eb808d74086cb6f4b9471b882.zip
Configurable worker pool size
Diffstat (limited to 'lib/action_cable/server.rb')
-rw-r--r--lib/action_cable/server.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/action_cable/server.rb b/lib/action_cable/server.rb
index 10c94734ef..d1b7e14b53 100644
--- a/lib/action_cable/server.rb
+++ b/lib/action_cable/server.rb
@@ -1,10 +1,11 @@
-Celluloid::Actor[:worker_pool] = ActionCable::Worker.pool(size: 100)
-
module ActionCable
class Server
class_attribute :registered_channels
self.registered_channels = Set.new
+ class_attribute :worker_pool_size
+ self.worker_pool_size = 100
+
class << self
def register_channels(*channel_classes)
self.registered_channels += channel_classes
@@ -13,6 +14,10 @@ module ActionCable
def call(env)
new(env).process
end
+
+ def worker_pool
+ @worker_pool ||= ActionCable::Worker.pool(size: worker_pool_size)
+ end
end
def initialize(env)
@@ -27,11 +32,11 @@ module ActionCable
@websocket.on(:message) do |event|
message = event.data
- Celluloid::Actor[:worker_pool].async.received_data(self, message) if message.is_a?(String)
+ self.class.worker_pool.async.received_data(self, message) if message.is_a?(String)
end
@websocket.on(:close) do |event|
- Celluloid::Actor[:worker_pool].async.cleanup_subscriptions(self)
+ self.class.worker_pool.async.cleanup_subscriptions(self)
end
@websocket.rack_response