Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Channel
- RESPONSE = {}
- REQUEST = {}
- @identifier = nil
- def self.receive state, json, headers, response
- RESPONSE.clear
- REQUEST[:state] = state
- req = JSON.parse json
- if req['data']
- data = JSON.parse req['data']
- end
- case req['command']
- when 'subscribe'
- REQUEST[:identifierJSON] = req['identifier']
- REQUEST[:identifier] = JSON.parse req['identifier']
- REQUEST[:identifier]['channel'].constantize.subscribe data
- when 'message'
- REQUEST[:identifierJSON] = req['identifier']
- REQUEST[:identifier] = JSON.parse req['identifier']
- REQUEST[:identifier]['channel'].constantize.send data['action'], data
- end
- response[0] = RESPONSE.to_json
- 200
- end
- private
- def self.state
- REQUEST[:state]
- end
- def self.stream_from *channels
- RESPONSE['subscribes'] = channels
- end
- def self.answer message
- message['identifier'] = REQUEST[:identifierJSON]
- RESPONSE['answer'] = message
- end
- def self.broadcast channel, message
- message = {identifier: REQUEST[:identifierJSON], message: message}
- broadcast = RESPONSE['broadcast']
- if broadcast
- if broadcast[channel]
- broadcast[channel] << message
- else
- broadcast[channel] = [message]
- end
- else
- RESPONSE['broadcast'] = {channel => [message]}
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement