realtimex 1.0.5 → 2.0.0

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: 17ae2b32fc50afe30a02e8c071875b887d3dc301e20674f1720cb857f1dd4685
4
- data.tar.gz: 30c7174d203fadbfce73c9bade2dcefebd5b0eb0b82afcfe55a028f21c89dc87
3
+ metadata.gz: 8401391664a412d0b303e7b627ec75580d6d56f1d6b20d4cccb5b537d0f3f07a
4
+ data.tar.gz: 984978e072d033e17394e63a14c57228dad5851be3ac854fb965079d12cec125
5
5
  SHA512:
6
- metadata.gz: 5d6337ee9057d96f9ce332f517509c88107ac02d44a6be3cc2abdefc086942c69bb19098418b29dcc7af138776e539b49208cbee63a8fdaa89210cf75f5b02f3
7
- data.tar.gz: e9df898748ff73e5ab97a839d0f897a25ba236995ee92ece8cd1ddb416e14e7427d17a8044418611dc1d4729b9a16020ad23231e51db43b21f6f70a1b8069080
6
+ metadata.gz: d6a3aba3f5638d32dc590e89bdf84ca32f750eed94decc155aab2c96f3ed42ceeec4fe0f71b3de63899cba5e9f4880b55563090dad817e9e2fc37453e8a74fec
7
+ data.tar.gz: fc0dd351bdffaddedc26493265acc6f3a9489455ee76f2b4fe6f62b76090705cf97956f6305811a08be4d693d0c92c4f31cacec1cea4857eecac5bd6c09e5745
@@ -1,14 +1,5 @@
1
- require 'uri'
2
- require 'cgi'
3
-
4
- # Patch for Ruby 3.4 compatibility
5
- module URI
6
- def self.encode(str)
7
- CGI.escape(str)
8
- end
9
- end unless URI.respond_to?(:encode)
10
-
11
- require 'socket.io-client-simple'
1
+ require 'websocket-client-simple'
2
+ require 'json'
12
3
 
13
4
  class RealtimeX::Connection
14
5
  def initialize(url, debug: false)
@@ -23,9 +14,9 @@ class RealtimeX::Connection
23
14
  puts "[RealtimeX] Connecting to: #{@url}" if @debug
24
15
 
25
16
  begin
26
- @socket = SocketIO::Client::Simple.connect(@url, transports: ['websocket'])
17
+ @socket = WebSocket::Client::Simple.connect(@url)
27
18
  setup_handlers
28
- puts "[RealtimeX] Socket.IO client created successfully" if @debug
19
+ puts "[RealtimeX] WebSocket client created successfully" if @debug
29
20
  rescue => e
30
21
  puts "[RealtimeX] Connection failed: #{e.message}" if @debug
31
22
  emit('error', { message: e.message, type: 'connection_error' })
@@ -34,54 +25,68 @@ class RealtimeX::Connection
34
25
  end
35
26
 
36
27
  def setup_handlers
37
- @socket.on :connect do
28
+ @socket.on :open do
38
29
  @connected = true
39
- puts "[RealtimeX] Socket.IO connected successfully" if @debug
30
+ puts "[RealtimeX] WebSocket connected successfully" if @debug
40
31
  emit('connected')
41
32
  end
42
33
 
43
- @socket.on :disconnect do
34
+ @socket.on :close do
44
35
  @connected = false
45
- puts "[RealtimeX] Socket.IO disconnected" if @debug
36
+ puts "[RealtimeX] WebSocket disconnected" if @debug
46
37
  emit('disconnected')
47
38
  end
48
39
 
49
40
  @socket.on :error do |error|
50
- puts "[RealtimeX] Socket.IO error: #{error}" if @debug
41
+ puts "[RealtimeX] WebSocket error: #{error}" if @debug
51
42
  emit('error', error)
52
43
  end
53
44
 
54
- @socket.on 'server-event' do |data|
55
- puts "[RealtimeX] Received server-event: #{data}" if @debug
56
- emit('message', data)
45
+ @socket.on :message do |msg|
46
+ puts "[RealtimeX] Received message: #{msg.data}" if @debug
47
+ handle_message(msg.data)
57
48
  end
49
+ end
58
50
 
59
- @socket.on 'realtimex_internal:subscription_succeeded' do |data|
60
- puts "[RealtimeX] Subscription succeeded: #{data}" if @debug
61
- emit('subscription_succeeded', data)
51
+ def handle_message(data)
52
+ # Parse Socket.IO message format: 42["event",{data}]
53
+ if data.start_with?('42[')
54
+ json_part = data[3..-2] # Remove '42[' and ']'
55
+ parts = JSON.parse("[#{json_part}]")
56
+ event = parts[0]
57
+ event_data = parts[1]
58
+
59
+ case event
60
+ when 'server-event'
61
+ emit('message', event_data)
62
+ when 'realtimex_internal:subscription_succeeded'
63
+ emit('subscription_succeeded', event_data)
64
+ end
62
65
  end
66
+ rescue JSON::ParserError => e
67
+ puts "[RealtimeX] Failed to parse message: #{e.message}" if @debug
63
68
  end
64
69
 
65
70
  def send_subscribe(channel)
66
71
  ensure_connected
67
72
  puts "[RealtimeX] Subscribing to channel: #{channel}" if @debug
68
- @socket.emit('realtimex:subscribe', { channel: channel })
73
+ message = "42[\"realtimex:subscribe\",{\"channel\":\"#{channel}\"}]"
74
+ @socket.send(message)
69
75
  end
70
76
 
71
77
  def send_client_event(channel, event, data)
72
78
  ensure_connected
73
79
  puts "[RealtimeX] Sending client event: #{event} to #{channel}" if @debug
74
- @socket.emit('client-event', {
75
- channel: channel,
76
- event: event,
77
- data: data
78
- })
80
+ data_json = JSON.generate(data)
81
+ message = "42[\"client-event\",{\"channel\":\"#{channel}\",\"event\":\"#{event}\",\"data\":#{data_json}}]"
82
+ @socket.send(message)
79
83
  end
80
84
 
81
85
  def send_unsubscribe(channel)
82
86
  ensure_connected
83
87
  puts "[RealtimeX] Unsubscribing from channel: #{channel}" if @debug
84
- @socket.emit('realtimex:unsubscribe', { channel: channel })
88
+ message = "42[\"realtimex:unsubscribe\",{\"channel\":\"#{channel}\"}]"
89
+ @socket.send(message)
85
90
  end
86
91
 
87
92
  def bind(event, &block)
@@ -94,7 +99,7 @@ class RealtimeX::Connection
94
99
 
95
100
  def disconnect
96
101
  puts "[RealtimeX] Disconnecting..." if @debug
97
- @socket&.disconnect
102
+ @socket&.close
98
103
  @connected = false
99
104
  end
100
105
 
@@ -1,3 +1,3 @@
1
1
  class RealtimeX
2
- VERSION = "1.0.5"
2
+ VERSION = "2.0.0"
3
3
  end
data/lib/realtimex.rb CHANGED
@@ -57,7 +57,7 @@ class RealtimeX
57
57
  end
58
58
 
59
59
  def build_url
60
- protocol = @options[:encrypted] ? 'https' : 'http'
60
+ protocol = @options[:encrypted] ? 'wss' : 'ws'
61
61
  host = @options[:ws_host]
62
62
  port = @options[:ws_port]
63
63
  "#{protocol}://#{host}:#{port}/socket.io/?EIO=4&transport=websocket&api_key=#{@api_key}"
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.5
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealtimeX Team
@@ -11,19 +11,19 @@ cert_chain: []
11
11
  date: 2025-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: socket.io-client-simple
14
+ name: websocket-client-simple
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
19
+ version: '0.9'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.2'
26
+ version: '0.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement