Module: LiteCable

Defined in:
lib/lite_cable.rb,
lib/lite_cable/coders.rb,
lib/lite_cable/config.rb,
lib/lite_cable/server.rb,
lib/lite_cable/channel.rb,
lib/lite_cable/logging.rb,
lib/lite_cable/version.rb,
lib/lite_cable/anycable.rb,
lib/lite_cable/internal.rb,
lib/lite_cable/coders/raw.rb,
lib/lite_cable/connection.rb,
lib/lite_cable/coders/json.rb,
lib/lite_cable/channel/base.rb,
lib/lite_cable/channel/streams.rb,
lib/lite_cable/connection/base.rb,
lib/lite_cable/channel/registry.rb,
lib/lite_cable/server/heart_beat.rb,
lib/lite_cable/server/middleware.rb,
lib/lite_cable/broadcast_adapters.rb,
lib/lite_cable/connection/streams.rb,
lib/lite_cable/server/client_socket.rb,
lib/lite_cable/server/subscribers_map.rb,
lib/lite_cable/broadcast_adapters/base.rb,
lib/lite_cable/connection/authorization.rb,
lib/lite_cable/connection/subscriptions.rb,
lib/lite_cable/broadcast_adapters/memory.rb,
lib/lite_cable/connection/identification.rb,
lib/lite_cable/server/client_socket/base.rb,
lib/lite_cable/broadcast_adapters/any_cable.rb,
lib/lite_cable/server/client_socket/subscriptions.rb

Overview

:nodoc:

Defined Under Namespace

Modules: AnyCable, BroadcastAdapters, Channel, Coders, Connection, Logging, Server Classes: Config, UnknownChannelError

Constant Summary collapse

VERSION =
"0.8.0"
INTERNAL =
{
  message_types: {
    welcome: "welcome",
    ping: "ping",
    confirmation: "confirm_subscription",
    rejection: "reject_subscription",
    cancel: "cancel_subscription"
  }.freeze,
  protocols: ["actioncable-v1-json", "actioncable-unsupported"].freeze
}.freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.channel_registryObject

Returns the value of attribute channel_registry.



26
27
28
# File 'lib/lite_cable.rb', line 26

def channel_registry
  @channel_registry
end

Class Method Details

.anycable!Object

Patch Lite Cable with AnyCable functionality



52
53
54
# File 'lib/lite_cable/anycable.rb', line 52

def self.anycable!
  LiteCable::Connection::Base.extend LiteCable::AnyCable::Connection
end

.broadcast(stream, message, coder: LiteCable.config.coder) ⇒ Object

Broadcast encoded message to the stream



29
30
31
# File 'lib/lite_cable.rb', line 29

def broadcast(stream, message, coder: LiteCable.config.coder)
  broadcast_adapter.broadcast(stream, message, coder: coder)
end

.broadcast_adapterObject



33
34
35
36
37
# File 'lib/lite_cable.rb', line 33

def broadcast_adapter
  return @broadcast_adapter if defined?(@broadcast_adapter)
  self.broadcast_adapter = LiteCable.config.broadcast_adapter.to_sym
  @broadcast_adapter
end

.broadcast_adapter=(adapter) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/lite_cable.rb', line 39

def broadcast_adapter=(adapter)
  if adapter.is_a?(Symbol) || adapter.is_a?(Array)
    adapter = BroadcastAdapters.lookup_adapter(adapter)
  end

  unless adapter.respond_to?(:broadcast)
    raise ArgumentError, "BroadcastAdapter must implement #broadcast method. " \
                          "#{adapter.class} doesn't implement it."
  end

  @broadcast_adapter = adapter
end

.configObject



22
23
24
# File 'lib/lite_cable.rb', line 22

def config
  @config ||= Config.new
end