【问题标题】:What's the best way to implement a Live chat system on my webserver?在我的网络服务器上实现实时聊天系统的最佳方式是什么?
【发布时间】:2011-06-09 17:31:31
【问题描述】:

我对基于 Jabber 的东西感兴趣,但我没有找到免费/开源的,所以我正在考虑写一个。

我已经安装了 Jabber 服务器,现在正在考虑编写客户端的方式。我正在考虑这两种方法中的一种。

1) 对在负责连接服务器的网络服务器上运行的 jabber 脚本进行的 ajax 调用。但后来我想,由于 jabber 客户端涉及的依赖关系,当几个客户端连接时,它可能最终会消耗太多内存。

2) 另一种方法是运行一个作为守护进程运行的客户端,它负责所有繁重的工作。这样,我只需要一个发送欺骗消息的客户端实例(发件人的名称与用户在网站上输入的名称相同)。在网络服务器上运行的一个简单脚本通过某种 API(XMLRPC 或 Msgpack?)与这个守护进程对话

我认为#2 更好,但我不确定。还有其他方法可以实现吗?我正在考虑为此使用 Perl 或 Python。

【问题讨论】:

  • jabber 有很多开源客户端。为什么你需要建造一个新的?
  • @Apalala 非常正确,saint-andre.com/jabber/jsc 我已经成功使用了 OpenFire。考虑 SparkWeb 客户端 igniterealtime.org/sparkweb
  • 哪些?我找到的唯一一个是j-livesupport.com,售价 450 美元。另外,我对基于 Java 的不感兴趣。我的 VPS 上的 RAM 数量有限。我认为写一个简单的轻量级比一些我不需要的臃肿功能更好。

标签: python perl xmpp


【解决方案1】:

Jabber 现在通常被称为 XMPP,有几十个客户端和服务器,每种语言都有。如果您使用 Javascript(您提到 Ajax),您可能需要Strophe。大多数服务器都是模块化的,因此您只加载您需要的功能(考虑 Tigase、ejabberd 或 xmpppy)。编写自己的想法比听起来更糟糕。

【讨论】:

  • 我已经看过 Strophe,但我不确定这是否适合我。看起来整个客户端都是用 Javascript 实现的,所以我不确定这是否可以在限制性公司防火墙后面工作。我提到了 ajax 来轮询真正的客户端在后端运行的服务器。至于服务器,我已经在运行 ejabberd 了:)
  • Strophe 使用 BOSH,可以直接通过任何允许 AJAX 的防火墙。
  • 好的,我去试试。这应该是一个有趣的小项目。
  • 那么perlit,你最后用的是什么方法?我需要实现类似的东西,我很迷茫。谢谢。
【解决方案2】:

BOSH

  1. 安装prosody,因为它真的很容易安装并且内置了BOSH支持。您可以跳过此步骤,但您需要了解如何通过 ejabberd 使用 BOSH。
  2. 使用strophe.js 来实现这个(使用BOSH)。新浏览器支持跨域请求(CORS -> 阅读 Proxy-less BOSH 部分)。旧的浏览器可以使用代理或者中间使用 flash 作为代理。
  3. 阅读Professional XMPP Programming with JavaScript and jQuery 学习strophe。它甚至还有解释如何创建聊天的章节。

Node.js

或者您可以考虑安装 node.js 以使用 socket.io 创建您的聊天系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多