2

有没有一种方法可以在连接打开后向客户端发送多个 HTTP 响应?例如,假设它是一个用 Python 编写的游戏服务器,在 OpenShift 等 PaaS 上运行。客户端发送一个“GET”请求,其中包含连接请求。而且我希望能够每秒一次从服务器向客户端发送“更新”。我尝试保持连接打开并写入客户端,但没有成功。我所能做的就是客户端可以每秒发送一个“更新请求”,服务器可以对此做出响应。有解决方法吗?

提前致谢。

4

2 回答 2

2

您所描述的是 websocket,它是服务器和客户端之间的持久连接。我建议您使用socket.io,因为如果您的用户浏览器不支持 websockets,那么它会退回到其他可以达到相同目的的协议。

为了使用 sockets 或 socket.io,您必须在服务器上使用支持它们的 python 库,以及支持 gevent 或 tornado 等协程的库。查看gevent-socketio 之类的东西(尽管它已经有一段时间没有更新了),或者在 pip 上搜索pip search socketio其他一些选项。

如果您不想实现自己的解决方案,另一种选择是使用像PubnubPusher这样的消息传递服务。我在我自己的 python+openshift 应用程序上使用 Pubnub,并且集成是轻而易举的。这些消息传递服务负责维护与客户端的持久连接,当您想要一次更新一个或多个客户端时,您只需向消息传递服务发送一条消息,然后它们将消息传递给预期的接收者。

于 2013-07-25T04:21:22.047 回答
0

对于看到这个问题的其他人,您正在描述一种方式通信,另一种方法而不是 websockets 将是Server Sent Events,用于在不更改协议的情况下向客户端发送信息的 HTTP 解决方案(就像 websocket 一样)您可以阅读比较在本文中的两个选项之间。

这里还有一篇关于如何在 Python 中实现它们的文章。

于 2019-01-11T16:42:12.910 回答