从Tornado Web Framework获取服务器URL和端口

时间:2014-09-14 20:31:35

标签: python tornado

我正在使用Tornado Web Framework构建websocket服务器,我需要通过WebSocket从javascript连接。如何从龙卷风模板中获取服务器URL和端口?

我正在考虑这样的事情:

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

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

1 个答案:

答案 0 :(得分:3)

我认为你必须将它定义为上下文变量。 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