No commit activity in last 3 years
No release in over 3 years
Client for consuming WebSockets from http://eventflit.com
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0

Runtime

>= 0
~> 1.0
 Project Readme

eventflit-client: Ruby WebSocket client for Eventflit service

eventflit-client is a Ruby gem for consuming WebSockets from Eventflit service.

Installation

gem install eventflit-client

This gem is compatible with jruby

Single-Threaded Usage

The application will pause at eventflit.connect and handle events from Eventflit Channels as they happen.

require 'eventflit-client'
cluster = 'cus1'  # take this from your app's config in the dashboard
eventflit = EventflitClient::Socket.new(YOUR_APPLICATION_KEY, {
  secure: true,
  ws_host: "ws-#{cluster}.eventflit.com"
})

# Subscribe to two channels
eventflit.subscribe('channel1')
eventflit.subscribe('channel2')

# Subscribe to presence channel
eventflit.subscribe('presence-channel3', USER_ID)

# Subscribe to private channel
eventflit.subscribe('private-channel4', USER_ID)

# Subscribe to presence channel with custom data (user_id is mandatory)
eventflit.subscribe('presence-channel5', :user_id => USER_ID, :user_name => 'john')

# Bind to a global event (can occur on either channel1 or channel2)
eventflit.bind('globalevent') do |data|
  puts data
end

# Bind to a channel event (can only occur on channel1)
eventflit['channel1'].bind('channelevent') do |data|
  puts data
end

eventflit.connect

Asynchronous Usage

With eventflit.connect(true), the connection to Eventflit Channels will be maintained in its own thread. The connection will remain open in the background as long as your main application thread is running, and you can continue to subscribe/unsubscribe to channels and bind new events.

require 'eventflit-client'
eventflit = EventflitClient::Socket.new(YOUR_APPLICATION_KEY)
eventflit.connect(true) # Connect asynchronously

# Subscribe to two channels
eventflit.subscribe('channel1')
eventflit.subscribe('channel2')

# Bind to a global event (can occur on either channel1 or channel2)
eventflit.bind('globalevent') do |data|
  puts data
end

# Bind to a channel event (can only occur on channel1)
eventflit['channel1'].bind('channelevent') do |data|
  puts data
end

loop do
  sleep(1) # Keep your main thread running
end

Using native WebSocket implementation

This gem depends on the websocket gem which is a pure Ruby implementation of websockets.

However it can optionally use a native C or Java implementation for a 25% speed increase by including the websocket-native gem in your Gemfile.

Copyright and license

See LICENSE.txt.