python - 在后端处理 HTTP 和 websocket 连接

标签 python websocket tornado

我正在开发一款想要通过 iOS/Android/浏览器支持的游戏,并且认为 Websockets 是我想要用于通信的东西。我使用 python,所以发现我应该使用 Tornado。

我试图更好地理解 websockets 及其在浏览器中的集成。

  1. 通过 websocket 连接的消息是否也包含该连接的 HTTP cookie?如果没有我可以发送吗?
  2. 网页的 HTTP 连接如何链接到 websocket 连接?我的意思是我怎么知道它们来自服务器端的同一个网络应用程序?
  3. Tornado wiki page性能部分说Tornado可以用nginx作为前端来搭建。这是如何运作的?我认为 Tornado 和 nginx 必须运行在不同的机器上,因为它们都监听端口 80,而且 nginx 不理解 WS 协议(protocol)。我缺少什么?

如果有人能给我指出任何我可以阅读的有关 Tornado 或 websocket 的资源,这对我有帮助,那就太好了。

最佳答案

  1. websocket 是通过向服务器发送普通的 http 请求来设置的,该请求将包含该域的所有存储的 cookie。如果您进行 native 实现,例如Android 您可以使用像 Autobahn|Android 这样的库,该 API 允许您为 websocket 握手设置 cookie。

  2. 您可以在首次加载页面时设置 cookie 以维护 session 标识符。

  3. 在这种情况下,他们将运行 4 个 Tornado 实例(在不同的端口上,但不是端口 80),并在端口 80 上运行 Nginx 作为负载均衡器,将传入的客户端请求传播到 Tornado 实例,请参阅 running Tornado and Nginx on same server配置示例。 Nginx 的最新版本确实支持 websockets,例如 nginx + python + websockets

关于python - 在后端处理 HTTP 和 websocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21817942/

相关文章:

python - 任务失败,因为返回代码为 -1,而预期为 0 - Bamboo

python - Celery worker 并发

python - 是否可以在连接中分配 django channel 组?

android - WebSocket 在几个时间间隔之间不断断开连接

python - Tornado 调度程序

node.js - 事件驱动服务器/应用程序的免费 PaaS 有哪些限制?

java - 在 jython udp 数据包中发送原始十六进制数据

python - sphinx-apidoc 用法 - 多个源 python 目录

javascript - websocket 的 Emit 在 vuejs 和 vuex 上重复

python - 如何在 Tornado 网络服务器内找到阻塞调用?