RealtimeX Ruby SDK

Ruby client library for RealtimeX real-time messaging service.

Installation

Gemfile

gem 'socketio-client-simple', '~> 1.2'
gem 'json', '~> 2.0'

Manual

gem install socketio-client-simple json

Quick Start

require_relative 'lib/realtimex'

# Initialize
realtimex = RealtimeX.new('YOUR_API_KEY', {
  ws_host: 'localhost',
  ws_port: 3001,
  encrypted: false
})

# Connect
realtimex.connect

# Subscribe to a channel
channel = realtimex.subscribe('my-channel')

# Listen for events
channel.bind('my-event') do |data|
  puts "Received: #{data}"
end

# Send client events
channel.trigger('client-my-event', {
  message: 'Hello'
})

API Reference

RealtimeX

Constructor

realtimex = RealtimeX.new(api_key, options)

Parameters:

  • api_key (String): Your RealtimeX API key
  • options (Hash, optional): Configuration options
    • :ws_host (String): WebSocket host, default 'localhost'
    • :ws_port (Integer): WebSocket port, default 3001
    • :encrypted (Boolean): Use WSS, default false

Methods

connect

realtimex.connect

subscribe(channel_name)

channel = realtimex.subscribe('my-channel')
private_channel = realtimex.subscribe('private-my-channel')

disconnect

realtimex.disconnect

Channel

Methods

bind(event, &block)

channel.bind('my-event') do |data|
  puts "Event data: #{data}"
end

trigger(event, data)

# Client events must start with 'client-'
channel.trigger('client-my-event', {
  message: 'Hello World'
})

Connection Events

realtimex.connection.bind('connected') do
  puts 'Connected to RealtimeX'
end

realtimex.connection.bind('disconnected') do
  puts 'Disconnected from RealtimeX'
end

Channel Types

Public Channels

channel = realtimex.subscribe('my-channel')

Private Channels

private_channel = realtimex.subscribe('private-my-channel')

WebSocket Protocol

Connection

ws://your-host:port/socket.io/?EIO=4&transport=websocket&api_key=YOUR_API_KEY

Message Format

Subscribe:

{
  "event": "realtimex:subscribe",
  "data": {
    "channel": "my-channel"
  }
}

Client Event:

{
  "event": "client-event",
  "data": {
    "channel": "my-channel",
    "event": "client-my-event",
    "data": { "message": "Hello" }
  }
}

Server Event:

{
  "event": "server-event",
  "data": {
    "event": "my-event",
    "channel": "my-channel",
    "data": { "message": "Hello" }
  }
}

Compatibility

Ruby Support

  • Ruby 2.7+
  • JRuby 9.3+
  • TruffleRuby 22+

Dependencies

  • socketio-client-simple ~> 1.2
  • json ~> 2.0

Features

✅ WebSocket connection management
✅ Channel subscription/unsubscription
✅ Event listening and triggering
✅ Client events
✅ YARD documentation
✅ Unit tests with RSpec

Development

# Install dependencies
bundle install

# Run tests
bundle exec rspec

# Generate documentation
yardoc

License

MIT