You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
But I don't have any specifications on how should I separate JSONs in the response stream since it is not documented anywhere.
Basically I have 3 ways:
HTTP chunk = message
This fails at least in Fedora 31 on high load because sometimes bare newline \n appears as a separate chunk. In order to fix you probably should first concatenate JSON with \n before calling to Write(). Also, intermediate proxies may re-chunk stream.
Messages are separated using strictly one newline.
It is not documented as well, and comment in newline between JSON messages #931 states that newline is added just to simplify debugging. Somewhere in the net, I found that other software uses a double newline for that purpose (allow to divide messages containing formatted JSON). Currently, I choose this way.
Use JSON finite state machine to detect end of a message.
This way will work in any case, but technically this requires additional libraries for the majority of programming languages.
So, Please strictly document exact behavior (protocol) which should be considered for implementing JSON stream parser.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
First, I want to use GRPC gateway to access etcd watching functionality. Namely, https://github.com/etcd-io/etcd/blob/master/Documentation/dev-guide/api_grpc_gateway.md#watch-keys .
But I don't have any specifications on how should I separate JSONs in the response stream since it is not documented anywhere.
Basically I have 3 ways:
HTTP chunk = message
This fails at least in Fedora 31 on high load because sometimes bare newline
\n
appears as a separate chunk. In order to fix you probably should first concatenate JSON with\n
before calling toWrite()
. Also, intermediate proxies may re-chunk stream.Messages are separated using strictly one newline.
It is not documented as well, and comment in newline between JSON messages #931 states that newline is added just to simplify debugging. Somewhere in the net, I found that other software uses a double newline for that purpose (allow to divide messages containing formatted JSON). Currently, I choose this way.
Use JSON finite state machine to detect end of a message.
This way will work in any case, but technically this requires additional libraries for the majority of programming languages.
So, Please strictly document exact behavior (protocol) which should be considered for implementing JSON stream parser.
See also #931
@heyitsanthony please consider that problem also.
The text was updated successfully, but these errors were encountered: