realtimex 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dadea4e5e50e167e48dce94211ee860aa9fed37babd6daff7ff0f53fedde7d3c
4
- data.tar.gz: 1bb49f74670f9f17ad8a0ffe32ae4d696e8584a866c82d865ae2db814f6f874c
3
+ metadata.gz: 17ae2b32fc50afe30a02e8c071875b887d3dc301e20674f1720cb857f1dd4685
4
+ data.tar.gz: 30c7174d203fadbfce73c9bade2dcefebd5b0eb0b82afcfe55a028f21c89dc87
5
5
  SHA512:
6
- metadata.gz: 0563d13bc8c552ac50dbf0732bc55e48fcdca0f74df1debf3926ba767eda8e1efd1975a30a8f472c23024dfab6a04b0a5b30df56ee989e3d0e710ea5dbad4b55
7
- data.tar.gz: 4164494abf58ca0ed8c526e8de90cf9f91ee817b508ddb5679e264a551fed7108e5334768d375571e3bc8cc4eddef32ca2d8c85c48bebc4ddb6068421eea38b5
6
+ metadata.gz: 5d6337ee9057d96f9ce332f517509c88107ac02d44a6be3cc2abdefc086942c69bb19098418b29dcc7af138776e539b49208cbee63a8fdaa89210cf75f5b02f3
7
+ data.tar.gz: e9df898748ff73e5ab97a839d0f897a25ba236995ee92ece8cd1ddb416e14e7427d17a8044418611dc1d4729b9a16020ad23231e51db43b21f6f70a1b8069080
@@ -11,40 +11,66 @@ end unless URI.respond_to?(:encode)
11
11
  require 'socket.io-client-simple'
12
12
 
13
13
  class RealtimeX::Connection
14
- def initialize(url)
14
+ def initialize(url, debug: false)
15
15
  @url = url
16
16
  @socket = nil
17
17
  @callbacks = {}
18
+ @debug = debug
19
+ @connected = false
18
20
  end
19
21
 
20
22
  def connect
21
- @socket = SocketIO::Client::Simple.connect(@url, transports: ['websocket'])
22
- setup_handlers
23
+ puts "[RealtimeX] Connecting to: #{@url}" if @debug
24
+
25
+ begin
26
+ @socket = SocketIO::Client::Simple.connect(@url, transports: ['websocket'])
27
+ setup_handlers
28
+ puts "[RealtimeX] Socket.IO client created successfully" if @debug
29
+ rescue => e
30
+ puts "[RealtimeX] Connection failed: #{e.message}" if @debug
31
+ emit('error', { message: e.message, type: 'connection_error' })
32
+ raise e
33
+ end
23
34
  end
24
35
 
25
36
  def setup_handlers
26
37
  @socket.on :connect do
38
+ @connected = true
39
+ puts "[RealtimeX] Socket.IO connected successfully" if @debug
27
40
  emit('connected')
28
41
  end
29
42
 
30
43
  @socket.on :disconnect do
44
+ @connected = false
45
+ puts "[RealtimeX] Socket.IO disconnected" if @debug
31
46
  emit('disconnected')
32
47
  end
33
48
 
49
+ @socket.on :error do |error|
50
+ puts "[RealtimeX] Socket.IO error: #{error}" if @debug
51
+ emit('error', error)
52
+ end
53
+
34
54
  @socket.on 'server-event' do |data|
55
+ puts "[RealtimeX] Received server-event: #{data}" if @debug
35
56
  emit('message', data)
36
57
  end
37
58
 
38
59
  @socket.on 'realtimex_internal:subscription_succeeded' do |data|
60
+ puts "[RealtimeX] Subscription succeeded: #{data}" if @debug
39
61
  emit('subscription_succeeded', data)
40
62
  end
41
63
  end
42
64
 
43
65
  def send_subscribe(channel)
66
+ ensure_connected
67
+ puts "[RealtimeX] Subscribing to channel: #{channel}" if @debug
44
68
  @socket.emit('realtimex:subscribe', { channel: channel })
45
69
  end
46
70
 
47
71
  def send_client_event(channel, event, data)
72
+ ensure_connected
73
+ puts "[RealtimeX] Sending client event: #{event} to #{channel}" if @debug
48
74
  @socket.emit('client-event', {
49
75
  channel: channel,
50
76
  event: event,
@@ -53,6 +79,8 @@ class RealtimeX::Connection
53
79
  end
54
80
 
55
81
  def send_unsubscribe(channel)
82
+ ensure_connected
83
+ puts "[RealtimeX] Unsubscribing from channel: #{channel}" if @debug
56
84
  @socket.emit('realtimex:unsubscribe', { channel: channel })
57
85
  end
58
86
 
@@ -65,6 +93,28 @@ class RealtimeX::Connection
65
93
  end
66
94
 
67
95
  def disconnect
96
+ puts "[RealtimeX] Disconnecting..." if @debug
68
97
  @socket&.disconnect
98
+ @connected = false
99
+ end
100
+
101
+ def wait_for_connection(timeout = 5)
102
+ start_time = Time.now
103
+ while !@connected && (Time.now - start_time) < timeout
104
+ sleep 0.1
105
+ end
106
+ @connected
107
+ end
108
+
109
+ def connected?
110
+ @connected
111
+ end
112
+
113
+ private
114
+
115
+ def ensure_connected
116
+ unless @connected
117
+ raise "Not connected to RealtimeX. Call connect() first."
118
+ end
69
119
  end
70
120
  end
@@ -1,3 +1,3 @@
1
1
  class RealtimeX
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.5"
3
3
  end
data/lib/realtimex.rb CHANGED
@@ -19,7 +19,7 @@ class RealtimeX
19
19
  @channel_manager = ChannelManager.new
20
20
 
21
21
  url = build_url
22
- @connection = RealtimeX::Connection.new(url)
22
+ @connection = RealtimeX::Connection.new(url, debug: @options[:debug])
23
23
  setup_connection_handlers
24
24
  end
25
25
 
@@ -51,7 +51,8 @@ class RealtimeX
51
51
  {
52
52
  ws_host: 'localhost',
53
53
  ws_port: 3001,
54
- encrypted: false
54
+ encrypted: false,
55
+ debug: false
55
56
  }
56
57
  end
57
58
 
@@ -66,6 +67,10 @@ class RealtimeX
66
67
  @connection.bind('message') do |data|
67
68
  route_to_channel(data)
68
69
  end
70
+
71
+ @connection.bind('error') do |error|
72
+ puts "[RealtimeX] Connection error: #{error}" if @options[:debug]
73
+ end
69
74
  end
70
75
 
71
76
  def route_to_channel(message)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: realtimex
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealtimeX Team