【问题标题】:Django chat with ajax pollingDjango 聊天与 ajax 轮询
【发布时间】:2010-06-04 11:21:14
【问题描述】:

我需要创建一个类似于 facebook 聊天的聊天。

我正在考虑创建一个简单的应用程序聊天,然后使用 ajax 轮询(每 2-3 秒发送一次请求)。

这是一个好方法吗?

【问题讨论】:

    标签: python ajax django comet chat


    【解决方案1】:

    我会选择涉及由服务器控制的推送/实时消息传递的东西。您将获得适当的实时聊天,并且可以更好地扩展。看看http://www.orbited.org/,我认为这是要走的路。它不是核心 django,但它是 Python,可以很好地与服务器上的 Django 应用程序一起使用

    【讨论】:

    • 我的服务器不支持轨道 :(
    • 缺少什么 - 扭曲?你的主机不让你安装吗?如果你问他们可能会
    • @xRobot 诸如实时聊天之类的东西需要大量的硬件资源。如果您使用长轮询或推送方法。推送方法基于保持 HTTP 连接打开,这会消耗服务器上的内存。长轮询方法会消耗内存和 CPU 时间。您肯定至少需要一个具有 512MB 内存的 VPS 才能让您的应用程序支持合理数量的用户。因此,如果您的主机不允许您安装 twisted,很可能它甚至没有为您提供足够的硬资源。
    • 只是评论:这个答案现在已经严重过时了,除了轨道之外还有很多实时通信选项
    【解决方案2】:

    ajax 在这里是最好的

    你需要什么: 1) 将返回最近消息的服务器视图 2) 通过计时器(我更喜欢 jQuery 及其计时器插件)和成功处理程序的客户端调用者,这将填充聊天窗口

    【讨论】:

    • 客户端的 Ajax 是可行的方法,但是让客户端在计时器上轮询服务器端并不容易扩展。现在有更好的方法来处理后端。
    • @stevejalim:为什么客户投票是错误的方法?在我看来很简单,可以扩展......我不明白。
    • 我并没有说这在技术上是“错误的”——只是更现代的方法会产生更好的结果。如果你有 100 个用户,每 2 秒不断地点击服务器说“给我聊天消息”是可以的,但是如果你有 1000、10000 等等,你很快就会感到有些痛苦。使用客户端打开服务器的套接字并在需要时发送内容的方法将更好地维持增长。如果您愿意,您可以使用轮询方法(它已使用多年并且确实有效),但您询问轮询是否是一种好方法并认为现在有更好的方法
    • @xRobot for 100 个用户的轮询确实要简单得多(总共大约 20 行代码)对于缩放(stevejalim 要求),您可以查看ape-project.org
    • 好的,但是有了一个打开的套接字,我需要更多的内存......还是不需要?
    猜你喜欢
    • 2011-02-27
    • 2010-09-07
    • 2011-07-15
    • 1970-01-01
    • 2011-01-20
    • 2015-03-05
    • 2013-08-14
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多