SockJS - 토네이도 라이브러리의 on_message()
방법에서, 나는 클라이언트에 JSON 메시지를 보낼 : 때때로 특정 클라이언트에 send()
방법을 사용하여, 때로는 클라이언트 그룹은 broadcast()
방법을 사용합니다. 내가 메시지를 보내기 전에 문자열 키가 사전 객체 자신을 인코딩하는 simplejson
같은 것을 사용해야하는지 여부를 궁금해JSON 메시지
, 즉
on_message(self, message):
...
data = {'type': 1, 'body': 'blah'}
msg = json.dump(data)
# self.send(msg) or self.broadcast(conns, msg)
또는 인코딩 부분은 이미 SockJS - 토네이도에 의해 처리된다? 또한, on_message()
메서드의 message
인수가 항상 JSON 객체이기도합니다.
그래서 SockJS-Torando가있는 경우에, 난 그냥 할 필요가 각 나가는 MSG에 대한 JSON 인코딩을 수행합니다'MSG = { '유형': 1 , 'body': blah}'그리고 나서'self.send (msg)'또는'self.broadcast (conns, msg)'중 하나이다. 왜 msg를 JSON으로 두 번 인코딩하려고합니까? – skyork
이것은 "나쁜 습관"이기 때문에. 나중에 기본 웹 소켓으로 전환하려면 JSON 인코딩을 적용하기 전에 코드를 수정해야합니다. SockJS를 웹 소켓 대체품으로 생각하면 텍스트 이외의 것을 보낼 수 없습니다. 그렇습니다. 임의의 파이썬 객체를 전송할 수는 있지만, 다음 SockJS 버전에서는 코드가 중단 될 수 있습니다. 예상되는 동작이 아니기 때문입니다. – Joes
그냥'broadcast()'메서드를 사용한다고해도, 호출하기 전에 msg를 스스로 인코딩해야합니다. – skyork