Nov*_*ing 9 python django real-time websocket
什么是django的实时"推"选项,可以作为python包安装?我想避免不必像实时安装独立的Web服务器那样.
基本上我正在寻找像pusher.com(云系统)或者这个用于聊天和其他各种推送操作的django(具有构建状态:失败)的socket.io构建.
这里建议使用Ape ,但似乎需要将Ape设置为服务器.如果它没有太多要求,是否有任何解决方案可以直接进入django?
自答案撰写时间(2012年); 很多都改变了.
现在对系统进行实时更新的首选方法是使用websockets; 正在形式化并提议作为标准RFC 6455.MDN上的这个页面对该技术有很好的概述.
项目如swampdragon和Django的socketio在您的项目中整合实时功能更容易.
任何实时系统都有两个主要组件:
好的,也许是三个组成部分.
由于django不能实时工作,任何提供实时推送/更新的解决方案都需要另一台服务器/服务接受消息,然后通知侦听器未决消息.
Django将是在通道(队列/存储桶)上将消息(写入它们)推送到此服务器的应用程序.然后,监听器订阅要通知消息的频道.由于连接保持打开; 消息以"实时"检索.
Django在所有这些方面确实扮演了最小的角色.有各种实现提供实时通知工作所需的三个组件.
我非常喜欢juggernaut,因为它设置起来非常简单,并且使用了在服务器端组件方面不需要很多的node.js.我更喜欢它的另一个原因是因为它支持WebSocket(以及其他链接)的Adobe Flash Socket.
访问它的api也非常简单 - 事实上,如果你已经在使用redis(你真的应该这么容易使用),你不需要另外的API,因为你可以将消息丢给redis并且juggernaut会读取它们,或者您可以使用其Python API.这个烧瓶片段的一个简单示例:
向频道发送(写入)消息:
>>> from juggernaut import Juggernaut
>>> jug = Juggernaut()
>>> jug.publish('channel', 'The message')
Run Code Online (Sandbox Code Playgroud)
听这个:
<script type=text/javascript
src=http://localhost:8080/application.js></script>
<script type=text/javascript>
var jug = new Juggernaut();
jug.subscribe('channel', function(data) {
alert('Got message: ' + data);
});
</script>
Run Code Online (Sandbox Code Playgroud)
Django 是为提供网页服务而构建的,并且 Django 中没有任何现成的东西可以支持 websocket。最快/最简单的选择是pusher.com(我非常喜欢它)。您可以从像 Pusher.com 这样的东西开始,如果您围绕它编写一个快速包装器,您可以使用 socket.io 或任何其他 Web 套接字服务器将其替换为您自己的服务器,只需更改包装器/接口以连接到新服务器。只要确保你编写的代码能够随时切换后端即可。
如果您确实想开始运行自己的套接字服务器,那么有一些项目可以让您轻松地在 django 中使用套接字:
归档时间: |
|
查看次数: |
3517 次 |
最近记录: |