在SockJS-Tornado库的on_message()方法中,我希望将JSON消息发送到客户端:有时使用send()方法发送到特定的客户端,有时使用broadcast()方法发送到一组客户端。
我想知道在发送消息之前,我是否需要自己使用类似simplejson的东西来编码字符串键字典对象。
on_message(self, message):
...
data = {'type': 1, 'body': 'blah'}
msg = json.dump(data)
# self.send(msg) or self.broadcast(conns, msg)或者编码部分已经由SockJS-Tornado处理了?另外,on_message()方法中的message参数是不是也是一个JSON对象?
发布于 2012-09-15 02:28:30
SockJS是websocket模拟层。Websockets不支持除文本和二进制数据以外的任何内容。
因此,虽然您可以通过网络发送任意python对象(sockjs-tornado将执行内部json序列化,并且不强制字符串),但出于兼容性原因,不鼓励这样做。
是的,如果使用json作为应用协议,则会发生双重编码。然而,如果你打算使用广播功能-使用优化的广播()方法,它将只对所有接收者执行一次json编码。
邮件列表中也有相关讨论:https://groups.google.com/forum/?fromgroups#!topic/sockjs/vsFvHqppq5g
https://stackoverflow.com/questions/12417062
复制相似问题