栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django向用户推送HTTP响应

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418692.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号