oceanex-slanger 0.7.2.0 → 0.7.3.0

Sign up to get free protection for your applications and to get access to all the features.
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