我正在开发一款想要通过 iOS/Android/浏览器支持的游戏,并且认为 Websockets 是我想要用于通信的东西。我使用 python,所以发现我应该使用 Tornado。
我试图更好地理解 websockets 及其在浏览器中的集成。
- 通过 websocket 连接的消息是否也包含该连接的 HTTP cookie?如果没有我可以发送吗?
- 网页的 HTTP 连接如何链接到 websocket 连接?我的意思是我怎么知道它们来自服务器端的同一个网络应用程序?
- Tornado wiki page性能部分说Tornado可以用nginx作为前端来搭建。这是如何运作的?我认为 Tornado 和 nginx 必须运行在不同的机器上,因为它们都监听端口 80,而且 nginx 不理解 WS 协议(protocol)。我缺少什么?
如果有人能给我指出任何我可以阅读的有关 Tornado 或 websocket 的资源,这对我有帮助,那就太好了。
最佳答案
websocket 是通过向服务器发送普通的 http 请求来设置的,该请求将包含该域的所有存储的 cookie。如果您进行 native 实现,例如Android 您可以使用像 Autobahn|Android 这样的库,该 API 允许您为 websocket 握手设置 cookie。
您可以在首次加载页面时设置 cookie 以维护 session 标识符。
在这种情况下,他们将运行 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/