Keeping in mind that Gremlin Server is under major development right now........the basic format of an "eval" messages (meaning execute a script) is:
application/json|-{"requestId":"655BD810-B41E-429D-B78F-3CC5F3B8E9BA","processor":"","op":"eval","args":{"gremlin":"1+1"}}
it's a text based protocol where the request consists of the serialization format of the message (in this case "application/json"), followed by a delimiter of "|-", then the message. This will return a text based result consisting of two separate responses:
655BD810-B41E-429D-B78F-3CC5F3B8E9BA>>2
655BD810-B41E-429D-B78F-3CC5F3B8E9BA>>655BD810-B41E-429D-B78F-3CC5F3B8E9BA
where the first response is the result of the script (i.e. 2) and the second is the response terminator. So from this you know two things:
1. that each response belongs to a particular request
2. the the server is done iteration results back to the client
Text isn't so great so you could issue something more advanced with:
application/json|-{"requestId":"655BD810-B41E-429D-B78F-3CC5F3B8E9BA","processor":"","op":"eval","args":{"gremlin":"[1,2,3]","accept":"application/json"}}
You'll see that the it returns 4 results formatted as JSON (given the "accept" argument):
{"result":1, "code":200, "requestId":"655BD810-B41E-429D-B78F-3CC5F3B8E9BA","version":"1.0.0"}
{"result":2, "code":200, "requestId":"655BD810-B41E-429D-B78F-3CC5F3B8E9BA","version":"1.0.0"}
{"result":3, "code":200, "requestId":"655BD810-B41E-429D-B78F-3CC5F3B8E9BA","version":"1.0.0"}
{"result":"655BD810-B41E-429D-B78F-3CC5F3B8E9BA", "code":200, "requestId":"655BD810-B41E-429D-B78F-3CC5F3B8E9BA","version":"1.0.0"}
I tried issuing these requests in the chrome plugin you are using against Gremlin Server built from this branch:
and it seemed to work just fine, though that plugin is a little clunky...couldn't even copy/paste the results of requests from it :/
Hope that helps you get on your way in your experiments with TinkerPop3.
Stephen