use LengthFieldBasedFrameDecoder instead

avoids any weird escaping issues with message format, and more appropriate for
this particular use case