Class: JSONSocket::Server
Instance Method Summary
collapse
#encode_json, #parse_json
Constructor Details
#initialize(host: "127.0.0.1", port: 1234, delimeter: "#", unix_socket: nil, oj_options: nil) ⇒ Server
Returns a new instance of Server.
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/json-socket.rb', line 25
def initialize(host: "127.0.0.1", port: 1234, delimeter: "#", unix_socket: nil, oj_options: nil)
Oj.default_options = oj_options if oj_options
@delimeter = delimeter
@stop = false
@server = if unix_socket
FileUtils.rm_f(unix_socket)
UNIXServer.new unix_socket
else
TCPServer.new host, port
end
end
|
Instance Method Details
#listen ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/json-socket.rb', line 41
def listen
loop do
Thread.start(@server.accept) do |client|
begin
client.set_encoding 'UTF-8'
message_length = client.gets(@delimeter).to_i
on_message(parse_json(client.read(message_length)), client)
rescue Exception => e
on_error e
end
end
break if @stop
end
end
|
#on_error(e) ⇒ Object
57
58
59
|
# File 'lib/json-socket.rb', line 57
def on_error e
STDERR.puts e.message
end
|
#on_message(message, client) ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/json-socket.rb', line 61
def on_message(message, client)
puts "Default on_message method - please override like this: \n" \
" \n" \
"class CustomJSONSocketServer < JSONSocket::Server \n" \
" \n" \
" def on_message(message, client)\n" \
" puts message \n" \
" self.send_end_message([1,2,3], client)\n" \
" end \n" \
" \n" \
"end \n"
client.close
end
|
#send_end_message(message, client) ⇒ Object
75
76
77
78
79
80
|
# File 'lib/json-socket.rb', line 75
def send_end_message(message, client)
client.set_encoding 'UTF-8'
strigified = encode_json(message)
client << "#{strigified.bytesize}#{@delimeter}#{strigified}"
client.close
end
|
#stop ⇒ Object
37
38
39
|
# File 'lib/json-socket.rb', line 37
def stop
@stop = true
end
|