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

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?