json 페이로드와 그렇지 않은 프로토콜을 개발해야합니다. 예를 들어 tcp/ip 소켓을 통해 시작 문자를 작성한 다음 json 페이로드, 끝 문자를 작성합니다. 이렇게하면 소켓에서 읽는 메시지가 언제 시작되고 끝나는 지 알 수 있습니다. 이제 여러 개의 json 페이로드를 처리하려는 특별한 경우에는 구분 문자가 필요합니다.
그래서 begin, end 및 separator 문자를 자유롭게 선택하십시오. 당신이 사용할 수있는 수많은 문자가 있습니다. 몇몇 선택을 위해 ascii/Hex 테이블을보십시오. 그러나 인쇄 할 수없는 문자를 사용하는 것이 가장 좋습니다. 그렇지 않으면 페이로드에 이러한 문자가 포함될 수있는 상황이 발생합니다.
경우에 따라 이스케이프 시퀀스에 대해 다른 문자 집합을 개발해야합니다. 즉, 시작, 끝 및 구분 기호를 정의한 후에는 해당 문자가 페이로드에서 불법이며 송신 측의 이스케이프 시퀀스로 대체해야합니다. 즉, 수신 측에서는 이스케이프 시퀀스를 올바른 문자로 다시 설정해야 페이로드를 초기 상태로 되돌릴 수 있습니다.
예를 들어 프로토콜을 다음과 같이 정의 할 수 있습니다.
[begin] = 0x02 // Hex for Start of text
[end] = 0x04 // Hex for end of end of transmission
[separator] = 0x03 // Hex for end of text
or
[begin] = 0x0B // Hex for Vertical Tab
[end] = 0x1C // Hex for file separator
[separator] = 0x1E // Hex for record separator
그런 다음 TCP/IP 소켓 (와이어)를 통해 오는 메시지는
[begin][json payload][separator][end].......[begin][json payload][seperator][json payload][separator][json payload][separator][end].......
그래서 당신이 작성해야 (여기서 ....... 메시지 사이의 시간)과 같을 것이다 코드가 시작될 때까지 와이어에서 읽을 코드. 그런 다음 구분 기호가 발견 될 때까지 페이로드를 저장하십시오. 그런 다음 구분 기호 다음에 오는 문자가 끝나지 않으면 다음 루프를 저장하고 다음 페이로드를 저장합니다.
나는 또한 MLLP (Minimum Lower Level Protocol)에 대한 Google 검색을 제안합니다.
나는 같은 질문을 스스로에게 물었다. Message Pack과 같이 JSON 대신 바이너리 프로토콜을 사용하는 것을 고려 했습니까? – plang