oceanex-slanger 0.7.2.0 → 0.7.3.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: fd9b25eb92c9c65e280f5c95abacbd2017839495426d90c6bfcad80edb2eacb1
4
- data.tar.gz: 347ccd8a7b564ae37bcce1ee0b42450f475c16a04516a4e32d2e884c3c956c40
3
+ metadata.gz: c29aabb135c13b3f60f650980b9472e0c14658d64e54054727fef3c14939d886
4
+ data.tar.gz: 512bc1d00c219b385cacf852d023eca1f52aa6b18eded305729ac832399917db
5
5
  SHA512:
6
- metadata.gz: 202ffef21123fa3a76eccb2ba95332ce2c7412162dd46abf24bc599259f12988223ef2e458d9e9c8c0583459a1e44d10a0c4729842bd42ca0f455e3d280d6cb1
7
- data.tar.gz: fe7251ce34692a9a57ab8b65d746324753860de89ec3f60e982b53f1ba85157ebf4c0471554b9b4edbe75690e8db8d985ee2acad900ee6d5a60ec219f9c8c901
6
+ metadata.gz: bcdd9a96fc8de94b85bf9f8b438146127b474464c8a5e6bb235c85e5c76af2b05bd6ffa5ab92ab16257afed4a065fdc3e47e74b486903ba2e7ca44f6c6887b3b
7
+ data.tar.gz: e3b06bcc9e8fd6540f058be92c91f9027b205dd227fdd87afd896d6bf0bc52cc4ae55fa6a0a416ce74ec499cd6e48b5f57f1fe3cfbb2db00a36c0263d482790f
@@ -12,7 +12,8 @@ require "oj"
12
12
  module Slanger
13
13
  class Channel
14
14
  extend Forwardable
15
-
15
+ CHANNEL_SUBSCRIBER_COUNT_KEY = "channel_subscriber_count"
16
+ CHANNEL_VACATED_DICT = "channel_vacated_dict"
16
17
  def_delegators :channel, :push
17
18
  attr_reader :channel_id
18
19
 
@@ -56,7 +57,7 @@ module Slanger
56
57
  end
57
58
 
58
59
  def subscribe(*a, &blk)
59
- Slanger::Redis.hincrby("channel_subscriber_count", channel_id, 1).
60
+ Slanger::Redis.channel_attend([CHANNEL_SUBSCRIBER_COUNT_KEY], [channel_id]).
60
61
  callback do |value|
61
62
  Slanger::Webhook.post name: "channel_occupied", channel: channel_id if value == 1
62
63
  end
@@ -65,9 +66,9 @@ module Slanger
65
66
  end
66
67
 
67
68
  def unsubscribe(*a, &blk)
68
- Slanger::Redis.hincrby("channel_subscriber_count", channel_id, -1).
69
+ Slanger::Redis.channel_leave([CHANNEL_SUBSCRIBER_COUNT_KEY], [channel_id]).
69
70
  callback do |value|
70
- Slanger::Webhook.post name: "channel_vacated", channel: channel_id if value == 0
71
+ Slanger::Webhook.post name: "channel_vacated", channel: channel_id if value == 1
71
72
  end
72
73
 
73
74
  channel.unsubscribe *a, &blk
@@ -0,0 +1,9 @@
1
+ local key = KEYS[1]
2
+ local filed = ARGV[1]
3
+ local number = redis.call('hincrby', key, filed, 1)
4
+ if number <= 0 then
5
+ redis.call('hset', key, filed, 1)
6
+ return 1
7
+ else
8
+ return number
9
+ end
@@ -0,0 +1,8 @@
1
+ local key = KEYS[1]
2
+ local filed = ARGV[1]
3
+ local number = redis.call('hincrby', key, filed, -1)
4
+ if number <= 0 then
5
+ return redis.call('hdel', key, filed)
6
+ else
7
+ return 0
8
+ end
data/lib/slanger/redis.rb CHANGED
@@ -34,6 +34,14 @@ module Slanger
34
34
  send_command :hdel, *arg
35
35
  end
36
36
 
37
+ def channel_leave(*arg)
38
+ send_command :channel_leave, *arg
39
+ end
40
+
41
+ def channel_attend(*arg)
42
+ send_command :channel_attend, *arg
43
+ end
44
+
37
45
  def hgetall(*arg)
38
46
  send_command :hgetall, *arg
39
47
  end
@@ -1,3 +1,3 @@
1
1
  module Slanger
2
- VERSION = "0.7.2.0"
2
+ VERSION = "0.7.3.0"
3
3
  end
@@ -1,3 +1,5 @@
1
+ $:.unshift(File.expand_path('../../lib', __FILE__))
2
+ require 'em-hiredis'
1
3
  require "eventmachine"
2
4
  require "em-websocket"
3
5
 
@@ -10,6 +12,8 @@ module Slanger
10
12
  end
11
13
 
12
14
  EM.run do
15
+ scripts_dir = File.expand_path("../lua", __FILE__)
16
+ EM::Hiredis::Client.load_scripts_from(scripts_dir)
13
17
  options = {
14
18
  host: Slanger::Config[:websocket_host],
15
19
  port: Slanger::Config[:websocket_port],
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oceanex-slanger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2.0
4
+ version: 0.7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joblee
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2021-06-15 00:00:00.000000000 Z
15
+ date: 2022-03-16 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: eventmachine
@@ -329,6 +329,8 @@ files:
329
329
  - lib/slanger/connection.rb
330
330
  - lib/slanger/handler.rb
331
331
  - lib/slanger/logger.rb
332
+ - lib/slanger/lua/channel_attend.lua
333
+ - lib/slanger/lua/channel_leave.lua
332
334
  - lib/slanger/presence_channel.rb
333
335
  - lib/slanger/presence_subscription.rb
334
336
  - lib/slanger/private_subscription.rb
@@ -358,7 +360,7 @@ licenses:
358
360
  - MIT
359
361
  metadata:
360
362
  homepage_uri: https://github.com/OceanEx/slanger
361
- source_code_uri: https://github.com/OceanEx/slanger/archive/v0.7.2.0.zip
363
+ source_code_uri: https://github.com/OceanEx/slanger/archive/v0.7.3.0.zip
362
364
  changelog_uri: https://github.com/OceanEx/slanger/releases
363
365
  post_install_message:
364
366
  rdoc_options: []
@@ -368,14 +370,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
368
370
  requirements:
369
371
  - - ">="
370
372
  - !ruby/object:Gem::Version
371
- version: 3.0.1
373
+ version: 2.6.3
372
374
  required_rubygems_version: !ruby/object:Gem::Requirement
373
375
  requirements:
374
376
  - - ">="
375
377
  - !ruby/object:Gem::Version
376
378
  version: '0'
377
379
  requirements: []
378
- rubygems_version: 3.2.20
380
+ rubygems_version: 3.0.3
379
381
  signing_key:
380
382
  specification_version: 4
381
383
  summary: A websocket service compatible with Pusher libraries