关于基于tornado的websocket服务在本机上调试的问题
我启动了一个简单的tornado服务器,代码如下
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.websocket
import json
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class ChatHandler(tornado.websocket.WebSocketHandler):
users = set()
def open(self):
ChatHandler.users.add(self)
def on_message(self, message):
jsonObject = json.loads(message)
for user in ChatHandler.users:
print(user)
self.write_message(jsonObject["message"])
def on_close(self):
ChatHandler.users.remove(self)
if __name__ == '__main__':
app = tornado.web.Application(
handlers=[
(r"/", IndexHandler),
(r"/ws",ChatHandler)
]
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(12345)
tornado.ioloop.IOLoop.instance().start()
现在的问题是,我分别在edge和chrome浏览器中通过localhost:12345访问的时候,当在某一个浏览器中发送消息的时候,想实现的效果是两个页面都能收到该消息。但实际的情况是只有发出消息的浏览器页面会收到两个MessageEvent,请问该如何解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
意思是,从谁那里收到的消息,就发给谁。有几个人在线发几次。
而你需要的是,不管从谁那里收到消息,都给每个在线的发一份。谁在线呢?当然是正在被迭代的
user
了。