eventd 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/eventd/eventd_client.rb +6 -2
- data/lib/eventd/eventd_server.rb +57 -0
- metadata +1 -1
data/lib/eventd/eventd_client.rb
CHANGED
@@ -18,7 +18,7 @@ class EventdClient < EventdObject
|
|
18
18
|
# em-websocket socket object
|
19
19
|
attr_accessor :socket
|
20
20
|
|
21
|
-
def initialize(socket, server)
|
21
|
+
def initialize(socket, server = nil)
|
22
22
|
super()
|
23
23
|
@socket = socket
|
24
24
|
@server = server
|
@@ -60,6 +60,10 @@ class EventdClient < EventdObject
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def broadcast(channel, data = nil)
|
63
|
-
@server.
|
63
|
+
if @server.broadcast_channel_allowed? channel
|
64
|
+
@server.clients.each do |client| client.emit channel, data end
|
65
|
+
else
|
66
|
+
self.emit 'error', "Broadcasts are not allowed on channel: #{channel}"
|
67
|
+
end
|
64
68
|
end
|
65
69
|
end
|
data/lib/eventd/eventd_server.rb
CHANGED
@@ -24,6 +24,12 @@ class EventdServer < EventdObject
|
|
24
24
|
# List of active clients on the server
|
25
25
|
attr_accessor :clients
|
26
26
|
|
27
|
+
# List of allowed broadcast channels
|
28
|
+
attr_accessor :allowed_broadcast_channels
|
29
|
+
|
30
|
+
# Broadcast restriction
|
31
|
+
attr_accessor :broadcasts_restricted
|
32
|
+
|
27
33
|
# Initialize the EventdServer with configuration options
|
28
34
|
#
|
29
35
|
# == Attributes
|
@@ -32,7 +38,10 @@ class EventdServer < EventdObject
|
|
32
38
|
def initialize(options = { :host => '127.0.0.1', :port => 8080 })
|
33
39
|
super()
|
34
40
|
@options = options
|
41
|
+
|
35
42
|
@clients = []
|
43
|
+
@broadcasts_restricted = false
|
44
|
+
@allowed_broadcast_channels = []
|
36
45
|
end
|
37
46
|
|
38
47
|
# Add to the EventdServer configuration
|
@@ -66,6 +75,54 @@ class EventdServer < EventdObject
|
|
66
75
|
@run_callback = callback
|
67
76
|
end
|
68
77
|
|
78
|
+
# Allow any broadcast
|
79
|
+
|
80
|
+
def allow_broadcasts
|
81
|
+
@broadcasts_restricted = false
|
82
|
+
end
|
83
|
+
|
84
|
+
# Restrict broadcasts
|
85
|
+
|
86
|
+
def restrict_broadcasts
|
87
|
+
@broadcasts_restricted = true
|
88
|
+
end
|
89
|
+
|
90
|
+
# Add an allowed broadcast channel
|
91
|
+
|
92
|
+
def add_allowed_broadcast(channel)
|
93
|
+
@allowed_broadcast_channels.push channel
|
94
|
+
end
|
95
|
+
|
96
|
+
# Remove an allowed broadcast channel
|
97
|
+
|
98
|
+
def remove_allowed_broadcast(channel)
|
99
|
+
@allowed_broadcast_channels.delete_if do |c| c == channel end
|
100
|
+
end
|
101
|
+
|
102
|
+
# Check if broadcasts are allowed
|
103
|
+
|
104
|
+
def broadcasts_allowed?
|
105
|
+
!@broadcasts_restricted
|
106
|
+
end
|
107
|
+
|
108
|
+
# Check if broadcasts are restricted
|
109
|
+
|
110
|
+
def broadcasts_restricted?
|
111
|
+
@broadcasts_restricted
|
112
|
+
end
|
113
|
+
|
114
|
+
# Check if a specific broadcast channel is allowed
|
115
|
+
|
116
|
+
def broadcast_channel_allowed?(channel)
|
117
|
+
!@broadcasts_restricted or @allowed_broadcast_channels.include? channel
|
118
|
+
end
|
119
|
+
|
120
|
+
# Check if a specific broadcast channel is restricted
|
121
|
+
|
122
|
+
def broadcast_channel_restricted?(channel)
|
123
|
+
@allowed_broadcast_channels.find_index channel == nil and @broadcasts_restricted
|
124
|
+
end
|
125
|
+
|
69
126
|
private
|
70
127
|
|
71
128
|
def handle_disconnection_for(client)
|