Sha256: 27ca224393933b428de495976c7fe2f0a9c86b0ec354ed9262bf2247d59ad843
Contents?: true
Size: 842 Bytes
Versions: 1
Compression:
Stored size: 842 Bytes
Contents
module Propono class UdpListenerError < ProponoError end class UdpListener def self.listen(&processor) new(&processor).listen end def initialize(&processor) raise UdpListenerError.new("Please provide a block to call for each message") unless block_given? @processor = processor end def listen loop { receive_and_process } end private def receive_and_process udp_data = socket.recvfrom(1024)[0] Thread.new { process_udp_data(udp_data) } end def process_udp_data(udp_data) json = JSON.parse(udp_data) @processor.call(json['topic'], json['message']) end def socket @socket ||= begin socket = UDPSocket.new socket.bind(Propono.config.udp_host, Propono.config.udp_port) socket end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
propono-0.6.0 | lib/propono/services/udp_listener.rb |