有没有一种方法可以在连接打开后向客户端发送多个 HTTP 响应?例如,假设它是一个用 Python 编写的游戏服务器,在 OpenShift 等 PaaS 上运行。客户端发送一个“GET”请求,其中包含连接请求。而且我希望能够每秒一次从服务器向客户端发送“更新”。我尝试保持连接打开并写入客户端,但没有成功。我所能做的就是客户端可以每秒发送一个“更新请求”,服务器可以对此做出响应。有解决方法吗?
提前致谢。
有没有一种方法可以在连接打开后向客户端发送多个 HTTP 响应?例如,假设它是一个用 Python 编写的游戏服务器,在 OpenShift 等 PaaS 上运行。客户端发送一个“GET”请求,其中包含连接请求。而且我希望能够每秒一次从服务器向客户端发送“更新”。我尝试保持连接打开并写入客户端,但没有成功。我所能做的就是客户端可以每秒发送一个“更新请求”,服务器可以对此做出响应。有解决方法吗?
提前致谢。
您所描述的是 websocket,它是服务器和客户端之间的持久连接。我建议您使用socket.io,因为如果您的用户浏览器不支持 websockets,那么它会退回到其他可以达到相同目的的协议。
为了使用 sockets 或 socket.io,您必须在服务器上使用支持它们的 python 库,以及支持 gevent 或 tornado 等协程的库。查看gevent-socketio 之类的东西(尽管它已经有一段时间没有更新了),或者在 pip 上搜索pip search socketio
其他一些选项。
如果您不想实现自己的解决方案,另一种选择是使用像Pubnub或Pusher这样的消息传递服务。我在我自己的 python+openshift 应用程序上使用 Pubnub,并且集成是轻而易举的。这些消息传递服务负责维护与客户端的持久连接,当您想要一次更新一个或多个客户端时,您只需向消息传递服务发送一条消息,然后它们将消息传递给预期的接收者。