python - 如何允许 ws ://instead of localhost://for tornado

标签 python sockets tornado

我有以下基本的 Tornado 应用程序:

import tornado.web

class IndexHandler(tornado.web.RequestHandler):
    """Regular HTTP handler to serve the ping page"""
    def get(self):
        self.write("OK")

if __name__ == "__main__":

    app = tornado.web.Application([
    (r"/", IndexHandler), 
    ])
    app.listen(8000)
    print 'Listening on 0.0.0.0:8000'
    tornado.ioloop.IOLoop.instance().start()

这将在“http://localhost:8000”上运行。我如何让它运行并接受 ws://localhost:8000 处的连接?

最佳答案

tornado.web.RequestHandler 用于接受 HTTP 请求。对于websocket,您需要使用tornado.websocket.WebSocketHandler .

<小时/>

另一件事需要注意的是,您不能直接从浏览器访问 websocket url。也就是说,您无法在地址栏中输入 ws://localhost:8000 并期望连接到 websocket。这不是 websocket 的工作方式。

Websocket 连接是升级连接。这意味着,您首先必须通过 HTTP 访问 url,然后使用 Javascript 升级到 websocket。

查看有关如何使用 Javascript 连接到 websocket 的示例,地址:Mozilla Web Docs .

关于python - 如何允许 ws ://instead of localhost://for tornado,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52574849/

相关文章:

python - 如何强制指定 Yaml 列表类型

python - 测试具有相同范围的变量

C++ 网络套接字、SCTP 和数据包大小

java - Java 客户端<-->服务器套接字的问题

python - @gen.coroutine 未在带有 Tornado 的 python 中定义

python - 在线程中调用 bash

python - 用 moto 模拟 lambda 响应

java - 创建 DatagramSocket 之前检查端口的可用性

python - Flask 和/或 Tornado - 处理对外部网络服务的耗时调用

python - 运行简单的 Python Tornado 应用程序时出现初始化错误