lib/xrefresh-server/server.rb in xrefresh-server-0.1.7 vs lib/xrefresh-server/server.rb in xrefresh-server-0.2.1

- old
+ new

@@ -17,28 +17,20 @@ def serve(socket) socket.binmode @last_client_id += 1 client = Client.new(@last_client_id, socket) @clients.add(client) - buffer = "" loop do - # accumulate incomming input in @buffer begin - buffer += socket.gets + buffer = socket.gets(XREFRESH_MESSAGE_SEPARATOR) rescue + # socket breaks on client disconnection break end - - begin - # try to parse buffer - msg = JSON.parse buffer - rescue - # buffer may be incomplete due to packet fragmentation ... - else - # got whole message => process it - buffer = "" - process(client, msg) - end + break unless buffer + message = buffer[0...-XREFRESH_MESSAGE_SEPARATOR.size] + json = JSON.parse(message) + process(client, json) end end def process(client, msg) # see windows implementation in http://github.com/darwin/xrefresh/tree/master/src/winmonitor/Server.cs#ProcessMessage \ No newline at end of file