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条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制