stack-service-base 0.0.39 → 0.0.41
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57f6986e2b0af7274d88d02271380e15e4b36023eba82a12a365089df93ae282
|
4
|
+
data.tar.gz: 11a89bb1fd1a2c8ec4ff862ab737f5f9040a4861e46ea68b871b255738071a93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00c30180960fa2df2be60564508524d7958d99933014555a920af23c53367b92951038cbbc429a2ed6d12f8bf9bd51bb09c83447638fba32b3b47f265f9ca05b
|
7
|
+
data.tar.gz: 86118fcf28ab9a9edb5791558a78a00671f670e901b1fadecd5c3a07a9c264682d8b68c386b3543f7bccedb66da757c09aa47cd0bf7801c9969438de0bf87a23
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'nats'
|
2
|
+
require 'nats/io/websocket'
|
3
|
+
|
4
|
+
# TODO PATCH https://github.com/nats-io/nats-pure.rb/issues/171
|
5
|
+
module NATS
|
6
|
+
module IO
|
7
|
+
class WebSocket
|
8
|
+
def initialize(options = {})
|
9
|
+
super
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def connect
|
14
|
+
super
|
15
|
+
|
16
|
+
setup_tls! if @uri.scheme == "wss" # WebSocket connection must be made over TLS from the beginning
|
17
|
+
|
18
|
+
@handshake = ::WebSocket::Handshake::Client.new url: @uri.to_s, **@options
|
19
|
+
@frame = ::WebSocket::Frame::Incoming::Client.new
|
20
|
+
@handshaked = false
|
21
|
+
|
22
|
+
@socket.write @handshake.to_s
|
23
|
+
|
24
|
+
until @handshaked
|
25
|
+
@handshake << method(:read).super_method.call(MAX_SOCKET_READ_BYTES)
|
26
|
+
if @handshake.finished?
|
27
|
+
@handshaked = true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Client
|
35
|
+
def create_socket
|
36
|
+
socket_class = case @uri.scheme
|
37
|
+
when "nats", "tls"
|
38
|
+
NATS::IO::Socket
|
39
|
+
when "ws", "wss"
|
40
|
+
# require_relative "websocket"
|
41
|
+
# TODO Local patch
|
42
|
+
require 'nats/io/websocket'
|
43
|
+
NATS::IO::WebSocket
|
44
|
+
else
|
45
|
+
raise NotImplementedError, "#{@uri.scheme} protocol is not supported, check NATS cluster URL spelling"
|
46
|
+
end
|
47
|
+
|
48
|
+
socket_class.new(
|
49
|
+
uri: @uri,
|
50
|
+
tls: {context: tls_context, hostname: @hostname},
|
51
|
+
connect_timeout: NATS::IO::DEFAULT_CONNECT_TIMEOUT,
|
52
|
+
**@initial_options # TODO PATCH https://github.com/nats-io/nats-pure.rb/issues/171
|
53
|
+
)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
require "nats"
|
2
|
+
require_relative 'nats_patch_1'
|
2
3
|
|
3
|
-
NATS_ENABLED = ENV['
|
4
|
+
NATS_ENABLED = ENV['SWARM_NATS_URL'].to_s != ''
|
4
5
|
|
5
|
-
|
6
|
+
SWARM_NATS_URL = ENV['SWARM_NATS_URL']# || 'nats://nats_single:4222'
|
6
7
|
NATS_STACK_NAME = ENV['STACK_NAME'] || 'undefined_stack'
|
7
8
|
NATS_SERVICE_NAME = ENV['STACK_SERVICE_NAME'] || 'undefined_service'
|
8
9
|
|
9
10
|
ENV['NATS_RECONNECT'] ||= 'true'
|
10
|
-
ENV['NATS_RECONNECT_TIME_WAIT'] ||= '
|
11
|
+
ENV['NATS_RECONNECT_TIME_WAIT'] ||= '30'
|
11
12
|
ENV['NATS_MAX_RECONNECT_ATTEMPTS'] ||= '-1'
|
12
13
|
|
13
14
|
module NATS
|
@@ -19,7 +20,7 @@ $nats_client = nil
|
|
19
20
|
def initialize_nats_service
|
20
21
|
LOGGER.info "Initializing NATS service"
|
21
22
|
|
22
|
-
$nats_client = NATS.connect
|
23
|
+
$nats_client = NATS.connect SWARM_NATS_URL
|
23
24
|
|
24
25
|
service = $nats_client.services.add(
|
25
26
|
name: "#{NATS_SERVICE_NAME}_#{NATS_STACK_NAME}",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack-service-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.41
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artyom B
|
@@ -220,6 +220,7 @@ files:
|
|
220
220
|
- lib/stack-service-base/database.rb
|
221
221
|
- lib/stack-service-base/fiber_pool.rb
|
222
222
|
- lib/stack-service-base/logging.rb
|
223
|
+
- lib/stack-service-base/nats_patch_1.rb
|
223
224
|
- lib/stack-service-base/nats_service.rb
|
224
225
|
- lib/stack-service-base/open_telemetry.rb
|
225
226
|
- lib/stack-service-base/project_template/github/.github/workflows/main.yml
|