The advantage of Celluloid::IO is that it gives you the ability to make IO calls which suspend the current task but do not block the actor as a whole. The realtime client doesn't make proper use of this, though - after reading from the socket, it immediately handles the input synchronously within the same task, so the input loop will not proceed to the next iteration until the handler is done. The net result is that the program can only handle one incoming message at once.
The advantage of
Celluloid::IOis that it gives you the ability to make IO calls which suspend the current task but do not block the actor as a whole. The realtime client doesn't make proper use of this, though - after reading from the socket, it immediately handles the input synchronously within the same task, so the input loop will not proceed to the next iteration until the handler is done. The net result is that the program can only handle one incoming message at once.