我正在使用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>
答案 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