weixin_45881400 2020-06-03 18:01 采纳率: 0%
浏览 659

python tornado.websocket 服务端 向客户端发送消息 write_message 报错 求大神呀呀呀


```class htmlHandel(RequestHandler):

    def get(self, url):
        if ("%s.html" % (url,)) in os.listdir("./html"):
            self.render(os.path.abspath('./html/%s.html' % (url,)))

        else:
            self.render(os.path.abspath('./html/404.html'))


class MyWebSocketHandler(WebSocketHandler):
    # 保存连接的用户,用于后续推送消息
    user = []

    # 判断源origin,对于符合条件的请求源允许链接
    def check_origin(self, origin):
        return True

    @classmethod
    def open(self):
        print("有人连接进来")

        # 打开连接时将用户保存到connect_users中
        self.user.append(self)
        for user in self.user:
            user.write_message("我是服务端")

    @classmethod
    def on_message(self, message):
        print('收到的信息为:' + message)

    @classmethod
    def on_close(self):
        print("WebSocket closed")
        # 关闭连接时将用户从connect_users中移除
        self.user.remove(self)

    def check_origin(self, origin):
        # 此处用于跨域访问
        return True

    @classmethod
    def send_demand_updates(cls, message):
        # 使用@classmethod可以使类方法在调用的时候不用进行实例化
        # 给所有用户推送消息(此处可以根据需要,修改为给指定用户进行推送消息)
        for user in cls.user:
            user.write_message(message)


def start_server(port):
    # 创建启动项 启动项负责配置映射规则
    app = tornado.web.Application([
        (r'/api', MyWebSocketHandler),
        # (r'/css/(.*.css)', tornado.web.StaticFileHandler, {"path": os.path.abspath("./static/css")}),  # 映射本地文件
        (r'/js/(.*.*)', tornado.web.StaticFileHandler, {"path": os.path.abspath("./static/js")}),
        # (r'/img/(.*)', tornado.web.StaticFileHandler, {"path": os.path.abspath("./static/img")}),
        (r'/(.*)', htmlHandel),

    ], debug=True)
    host = "localhost"
    print("服务已启动 http://%s:%s" % (host, port))

    server = HTTPServer(app, max_buffer_size=10240000, max_body_size=10240000)
    # 绑定端口
    server.bind(port)
    server.start()
    # 启动服务
    tornado.ioloop.IOLoop.instance().start()


if __name__ == '__main__':
    start_server(8000)

![报错信息](https://img-ask.csdn.net/upload/202006/03/1591178481_825692.png)
  • 写回答

1条回答

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集