在我的网络服务器上实现实时聊天系统的最佳方法是什么?

4 投票
2 回答
1539 浏览
提问于 2025-04-16 10:01

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

我已经安装了一个Jabber服务器,现在在想怎么写客户端。我在考虑以下两种方法。

1) 通过ajax调用一个在网络服务器上运行的Jabber脚本,这个脚本负责连接到服务器。但我想到,由于Jabber客户端的依赖关系,当有几个客户端连接时,可能会消耗太多内存。

2) 另一种方法是运行一个作为守护进程的客户端,负责所有的重任。这样我只需要一个客户端实例,它会发送伪造的消息(发件人的名字是用户在网站上输入的名字)。一个简单的脚本在网络服务器上运行,通过某种API(可能是XMLRPC或Msgpack)与这个守护进程通信。

我觉得第二种方法更好,但不太确定。还有其他实现的方法吗?我在考虑用Perl或Python来做这个。

2 个回答

1

BOSH

  1. 首先,安装prosody,因为它安装起来非常简单,并且自带了BOSH支持。如果你不想安装它,那就得自己研究怎么通过ejabberd来使用BOSH。
  2. 接下来,使用strophe.js来实现这个功能(使用BOSH)。现在的新浏览器支持跨域请求(CORS -> 可以看看没有代理的BOSH部分)。如果你用的是老浏览器,可以使用代理,或者通过Flash作为中间代理。
  3. 可以阅读《使用JavaScript和jQuery进行专业XMPP编程》来学习strophe。这本书里还有章节讲解如何创建聊天功能。

Node.js

或者你可以考虑安装Node.js,使用socket.io来创建你的聊天系统。

3

现在,Jabber通常被称为XMPP,市面上有很多客户端和服务器,几乎每种编程语言都有适用的工具。如果你在使用Javascript(你提到过Ajax),那么你可能会想用Strophe这个库。大多数服务器都是模块化的,这意味着你只需要加载你需要的功能(可以考虑Tigase、ejabberd或xmpppy)。自己写一个服务器的想法其实比听起来还要糟糕。

撰写回答