代码之家  ›  专栏  ›  技术社区  ›  amir ghorbani

如何限制tornado websocket消息大小

  •  2
  • amir ghorbani  · 技术社区  · 8 年前

    我在tornado中编写了一个websocket服务器 on_message

    这是我的代码,用于获取长度仅小于128字节的消息,但它似乎不起作用。

    class ClientWebSocketConnectionHandler(tornado.websocket.WebSocketHandler):
    
        def open(self):
            print "Connection is opened"
    
        def on_message(self, message):
            print message
    
        def on_close(self):
            print "closed"
    
    handlers = [(r'/', ClientWebSocketConnectionHandler)]
    tornado.web.Application.__init__(self, handlers)
    TheShieldsWebSocket = MainApplication()
    server =tornado.httpserver.HTTPServer(TheShieldsWebSocket,max_body_size=128)
    server.listen(8080)
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   xyres    6 年前

    由于版本4.5,如果Tornado在单个websocket帧(消息)中接收到超过10 MiB的数据,它将自动关闭连接。所以,你不必担心有人在一条消息中发送大量数据。你可以在 source code . 文件中也提到了这一点 WebsocketHandler 在最后的第二段。

    如果要更改默认帧限制,可以通过 Application 将一个参数初始化为 websocket_max_message_size 大小以字节为单位。

    app = tornado.web.Application(
          # your handlers etc,
          websocket_max_message_size=128
    )
    
        2
  •  0
  •   Community Mohan Dere    5 年前

    请参阅此处的文档:

    http://www.tornadoweb.org/en/stable/http1connection.html#tornado.http1connection.HTTP1Connection.set_max_body_size

    为了便于将来验证,请对链接进行解释:

    设置\u max\u body\u大小(max\u body\u size)[来源]

    设置单个请求的正文大小限制。

    重写HTTP1ConnectionParameters中的值。