【问题标题】:Get server url and port from Tornado Web Framework从 Tornado Web 框架获取服务器 url 和端口
【发布时间】:2014-09-14 20:31:34
【问题描述】:

我正在使用 Tornado Web 框架来构建一个 websocket 服务器,我需要从 javascript 通过 WebSocket 进行连接。如何从 tornado 模板中获取服务器 url 和端口?

我在想这样的事情:

<script>
var _url = "{{ (server_url) }}";
var _port = "{{ (server_port) }}";

var ws = new WebSocket("ws://" + _url + ":" + _port + "/socket");
</script>

【问题讨论】:

    标签: python tornado


    【解决方案1】:

    我认为您必须将其定义为上下文变量。 Tornado 不会自动将此信息提供给模板。

    使用tornado.options 设置此变量是个好主意。然后,将它们传递给您的模板。

    app.py 的简化内容:

    from tornado.options import options, define
    
    define("host", default="localhost", help="app host", type=str)
    define("port", default=3000, help="app port", type=int)
    
    
    class WebsocketHandler(tornado.web.RequestHandler):
    
        def get(self):
            self.render(
                "index_websocket.html",
                server_url=options.host,
                server_port=options.port
            )
    
    
    options.parse_command_line()  # don't forget to parse command line
    app = tornado.web.Application(...)
    app.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()
    

    在这种情况下,您可以运行您的应用程序并提供定义的设置:

    python app.py --host=yourserveraddres.com  --port=3000
    

    【讨论】:

    • self.request.host 可用于获取“ip:port”。我发现这种方式更有用
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    相关资源
    最近更新 更多