您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django向用户推送HTTP响应

Django向用户推送HTTP响应

HTTP本质上是一种“拉”协议,即客户端从服务器提取数据,等待一段时间,然后再提取更多数据。实际上,没有严格的HTTP方法可以将数据从服务器“推送”到客户端。

当你需要“推送”给客户时,基本上有三种选择。

(1)进行轮询-每隔X倍的时间使用Ajax / javascript轮询服务器。X越小,它越“像”推送,但服务器不断响应这些请求的体验也越多。

(2)使用websockets。HTML5规范的一部分是所谓的websockets。Websockets允许浏览器打开与服务器的持久连接。一旦打开此连接,就可以像使用更传统的TCP套接字一样,在客户端之间向服务器之间以及服务器与客户端之间来回推送数据。websockets的问题(我上次听说)是,它们在浏览器之间仍然有些气质,当然在旧版浏览器中根本无法使用。

(3)将Flash与Javascript接口配合使用。Flash具有设置持久TCP连接的功能,可以像“普通” TCP连接一样用于推/拉数据。(也请参见此SO问题:Flex中的HTTP推送示例)

如果你是从头开始这个项目,我建议你使用Socket.io在Node.js中编写后端。Socket.io是一个类似于“套接字”的框架,你可以对其编程,然后Javascript客户端(在你的Web浏览器中运行)会智能地确定要使用的最佳“持久连接”-首先尝试使用Websocket,然后使用Flash,然后再使用长时间轮询各种类型。

但是,既然你已经说过要使用Python / Django,那么你应该查看Django-Websockets-一个在Django中使用websockets的框架。但是请务必阅读作者在页面上发布的“ 免责声明”,使用该免责声明存在一些重大困难/局限性,主要是因为Django在设计时并未考虑到websocket。

我认为最好的选择是最终使用Websockets,并且当用户的浏览器不支持Websocket时,它会自动回退到Ajax Polling。

Go 2022/1/1 18:20:17 有564人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶