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