realtimex 2.0.1 → 2.0.3

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: 9fe93a87a37917d71f417e879a14a8c30a561fa65caeccf2e8448764e19b3459
4
- data.tar.gz: 3f3ca0cd8cd25a19942ea75ee5130b66b477059be6358040d630450b210b8803
3
+ metadata.gz: f21f973f93c22c74421369fbde68aa7bf4808226b5bf70a1a03dc0cfd6223629
4
+ data.tar.gz: f72a471ab8e0dff316a742a821ef510ad93c773242a000bbee045a2fac0e245f
5
5
  SHA512:
6
- metadata.gz: f7a41f4a01cdddfc78e40cb9bb4634067c83969a7da8cbe9c44c1b66ce9bc608134b091c8d1a11a7be3fcbab79ae84f524689d3f700ba17e11c2c7292a6ae7bb
7
- data.tar.gz: ffcce8f81349772680fc2e52119e35aa842412c7ddcc04da39d2ddbe8d2bd1f6fe76f95354ee6427b0da3e01153de10c6d09ee3e49b53e2e22f2a9ac2fc89f2d
6
+ metadata.gz: 130d5d467d7de0a9eff9c944335a8314eeccd7a14ca9b7b85a9da8b68404cbec9ad59daa80fef95f172a7acd494a85bd27d446220bc81cc8fa1a74c7b40e07d5
7
+ data.tar.gz: 2f9c25e37ab9091175a11977dabf699dbba33cf6f1783e6509ba25c23a4f5f5add34820ba4871a14d0a938e199fd9cf010edbc1379e7df7c73cd4a1ac2096506
@@ -8,6 +8,7 @@ class RealtimeX::Connection
8
8
  @callbacks = {}
9
9
  @debug = debug
10
10
  @connected = false
11
+ @emitting = false
11
12
  end
12
13
 
13
14
  def connect
@@ -19,32 +20,34 @@ class RealtimeX::Connection
19
20
  puts "[RealtimeX] WebSocket client created successfully" if @debug
20
21
  rescue => e
21
22
  puts "[RealtimeX] Connection failed: #{e.message}" if @debug
22
- emit('error', { message: e.message, type: 'connection_error' })
23
+ @callbacks['error']&.call({ message: e.message, type: 'connection_error' })
23
24
  raise e
24
25
  end
25
26
  end
26
27
 
27
28
  def setup_handlers
29
+ connection = self # Сохраняем ссылку на self
30
+
28
31
  @socket.on :open do
29
- @connected = true
30
- puts "[RealtimeX] WebSocket connected successfully" if @debug
31
- emit('connected')
32
+ connection.instance_variable_set(:@connected, true)
33
+ puts "[RealtimeX] WebSocket connected successfully" if connection.instance_variable_get(:@debug)
34
+ connection.emit('connected')
32
35
  end
33
36
 
34
37
  @socket.on :close do
35
- @connected = false
36
- puts "[RealtimeX] WebSocket disconnected" if @debug
37
- emit('disconnected')
38
+ connection.instance_variable_set(:@connected, false)
39
+ puts "[RealtimeX] WebSocket disconnected" if connection.instance_variable_get(:@debug)
40
+ connection.emit('disconnected')
38
41
  end
39
42
 
40
43
  @socket.on :error do |error|
41
- puts "[RealtimeX] WebSocket error: #{error}" if @debug
42
- emit('error', error)
44
+ puts "[RealtimeX] WebSocket error: #{error}" if connection.instance_variable_get(:@debug)
45
+ connection.send(:handle_error, error)
43
46
  end
44
47
 
45
48
  @socket.on :message do |msg|
46
- puts "[RealtimeX] Received message: #{msg.data}" if @debug
47
- handle_message(msg.data)
49
+ puts "[RealtimeX] Received message: #{msg.data}" if connection.instance_variable_get(:@debug)
50
+ connection.send(:handle_message, msg.data)
48
51
  end
49
52
  end
50
53
 
@@ -109,7 +112,11 @@ class RealtimeX::Connection
109
112
  end
110
113
 
111
114
  def emit(event, data = nil)
115
+ return if @emitting # Защита от рекурсии
116
+ @emitting = true
112
117
  @callbacks[event]&.call(data)
118
+ ensure
119
+ @emitting = false
113
120
  end
114
121
 
115
122
  def disconnect
@@ -130,6 +137,10 @@ class RealtimeX::Connection
130
137
  @connected
131
138
  end
132
139
 
140
+ def handle_error(error)
141
+ @callbacks['error']&.call(error)
142
+ end
143
+
133
144
  private
134
145
 
135
146
  def ensure_connected
@@ -1,3 +1,3 @@
1
1
  class RealtimeX
2
- VERSION = "2.0.1"
2
+ VERSION = "2.0.3"
3
3
  end
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: 2.0.1
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealtimeX Team