데이터가 네트워크를 통과 할 때 직렬화 될 수있는 클래스 메시지가 있습니다. 현재 JSON을 사용하고 있습니다. 주로 모든 것을 JSON으로 사용하기 때문입니다. (웹 서비스, 소켓).Javascript를 사용하여 네트워크를 통해 객체를 직렬화하려면 어떻게해야합니까?
가능한 한 선명하게하기 위해 직렬화를 개선하고 싶습니다. 여기서 재현이 가능하다고 생각합니다.
모든 것, 모든 응답 클라이언트/서버 또는 서버/클라이언트 그리고 심지어 서버 또는 클라이언트 내부에서 사용되기 때문에 특히 소켓 (비디오 게임)에서 사용할 때 전송 문자열을 더 가볍게 만드는 것이 목표입니다. 데이터를 제공하는 일반적인 방법입니다.
메시지는 MessageLang과 같은 다른 개체 인스턴스를 포함 할 수도있는 복잡한 개체로, 코드를 기반으로 클라이언트에서 문장을 번역 할 수 있습니다.
는 지금까지, 여기에 좋은 결과입니다 작품 :
verbose: websocket writing 5:::{"name":"user.newAuthenticated","args":["{\"m\":\"Respond to all clients\",\"d\":{},\"s\":1,\"t\":\"m\"}"]}
:
verbose: websocket writing 5:::{"name":"user.newAuthenticated","args":["Respond to emitter"]}
소켓 서버가 간단한 메시지 인스턴스로 방출 :
소켓 서버 간단한 문자열와 방출
복잡한 메시지 인스턴스가있는 소켓 서버 방출 :
verbose: websocket writing 5:::{"name":"user.newAuthenticated","args":["{\"m\":{\"m\":\"__12\",\"a\":{\"field\":\"name\",\"min\":3,\"max\":20}},\"d\":{\"key\":\"fakeKey\"},\"s\":1,\"t\":\"m\"}"]}
complexe 메시지가 다음 문장으로 렌더링 :
이이름의 최소 길이 3. 최대 길이가 20하고 data
에서 key: "fakeKey"
를 포함하는 것입니다. 어떻게 작동하는지 설명하기 만하면됩니다. 보시다시피
메시지가 커지고을 얻을 정상입니다,하지만 난 여기에 더 나은 직렬화하기 위해 무엇을 할 수 있는지 알고 싶습니다 :이 '그런가하면
- 는 메시지 자체를 삭제를 이뿐만 아니라 빈 때
- 데이터를 삭제 (비어 있음) t
- 는 J이기 때문에 소켓 로그에
\
의 많은를 참조 - (이 디폴트 값이기 때문에)는 false 때의 상태를 삭제 아들, 그게 문제라고 생각합니다. 내가 뭔가를 추가 할 때마다 내가 원하지 않는 여분의 캐릭터를 얻게 될 것이기 때문입니다. 어쩌면 JSON은 좋은 선택이 아니며 우선 JSON에서 먼저 예제와 같이 다르게 serialize해야합니다. 그러나 다른 방식으로는 이진 형식을 사용해야합니다.
어떻게 생각하십니까?
그리고 을 다른 형식의 메시지 인으로 암호화하는 것이 좋습니다. 암호화 비용은 그만한 가치가 있습니까?암호화하기 때문에 약간의 시간이 걸릴 것이므로 소켓을 통해 메시지를 보내는 데 걸리는 시간이 짧아지기 때문에 문제가 옮겨지지 않을지 궁금 할뿐입니다. 더 많은 시간을 암호화 할 수 있습니다. 그냥 궁금해.
예에서 '데이터'또는 '상태'가 표시되지 않습니다. –
각각'd'와's'에 일련 번호가 있습니다. 'm'은'message'를 의미합니다. – Vadorequest