class Wideact::Client

Public Class Methods

new(name, args = { host: "localhost", port: 40444, server: nil }) click to toggle source
# File lib/wideact/client.rb, line 5
def initialize(name, args = { host: "localhost", port: 40444, server: nil })
        @host = args[:host]
        @port = args[:port]
        if args[:server].nil?
                @client_socket = TCPSocket.new @host, @port
        else
                @client_socket = args[:server]
        end

        @listeners = []

        @from_server = Thread.new {
                loop do
                        while data = @client_socket.gets
                                if data.start_with?("MESSAGE")
                                        parse(data)
                                end
                        end
                end
        }

        @from_server.run

        connect(name)
end

Public Instance Methods

add_listener(&listener) click to toggle source
# File lib/wideact/client.rb, line 49
def add_listener(&listener)
        @listeners.push(listener)
end
close() click to toggle source
# File lib/wideact/client.rb, line 53
def close
        @from_server.stop
        @client_socket.close
end
connect(name) click to toggle source
# File lib/wideact/client.rb, line 41
def connect(name)
        @client_socket.puts "CONNECT #{name}"
end
message(receiver, message) click to toggle source
# File lib/wideact/client.rb, line 45
def message(receiver, message)
        @client_socket.puts "MESSAGE #{receiver} #{message}"
end
parse(data) click to toggle source
# File lib/wideact/client.rb, line 31
def parse(data)
        message = data.split(" ", 3)

        return if message.length < 3

        @listeners.each do |listener|
                listener.call(message[1], message[2])
        end
end