使用 Linux 烹饪 - 当 Ajax 扛起世界的重担

作者:Marcel Gagné

抱歉我迟到了,弗朗索瓦。我得去亨利那里取今晚的葡萄酒。他建议这酒非常适合今晚的菜单,我不想错过。这是 2003 年的马蒂厄酒庄,教皇新堡葡萄酒,在亨利精品葡萄酒店稍作品鉴以保证质量后,我确信我们的客人会非常喜欢这款酒。

Mon Dieu,弗朗索瓦!我不在的时候你重新装修了?嗯,是的,餐厅看起来确实令人印象深刻,但是古代希腊主题背后的想法是什么?还有,桌布——阿特拉斯扛着世界?我不明白。Quoi? 本期主题?Non, non, non, mon ami,不是阿特拉斯,是 Ajax。不,Ajax 不是希腊神;他是希腊神话中的人类战士,也是特洛伊战争的英雄。然而,在我们的例子中,Ajax 指的是异步 JavaScript 和 XML。

欢迎,mes amis,来到 Chez Marcel,由于我忠实的侍者即兴的重新装修,今晚看起来非常有希腊风情。尽管如此,我们仍然继续供应卓越的葡萄酒和同样出色的 Linux 及开源软件。请各位随意,我这就让弗朗索瓦立即为大家倒酒。immédiatement。因为我已经取回了今晚的酒,而且他无疑因重新装修而疲惫不堪,我们就不让他跑酒窖了。请,mon ami,为我们的客人倒酒。当然,现在我想起来,今晚的酒和装饰不太搭——但无论如何,这都是一款极好的酒,mes amis。请享用!

在你们到来之前,我正在向弗朗索瓦解释,Ajax 除了是希腊神话中的一个人物之外,还是一种 Web 开发技术,主要用于创建丰富、交互式且快速的 Web 应用程序,而这些应用程序不需要每次都重新加载网页。这种技术获得回报的一个完美例子是基于浏览器的聊天应用程序。过去,我介绍过基于 Web 的聊天程序,但与现代 Ajax 实现相比,它们重新加载和重新生成对话的趋势显得过时了。

今晚的菜单特色是两款基于 Ajax 的聊天程序。第一款是 Simon Oualid 的 GroChat(图 1),这是一款易于使用的聊天应用程序,您可以将其集成到您自己的网站中。GroChat 的功能包括公共和私人聊天、私人文件交换系统、多个聊天室、客户端聊天历史记录(因此您可以追溯到之前的对话部分内容)等等。它非常容易设置,并且不需要数据库。但是,您需要一个带有 PHP 的 Apache Web 服务器才能使用 GroChat,但这几乎是全部要求。

Cooking with Linux - When Ajax Held the World on His Shoulders

图 1. GroChat 非常简单易用,但仍能提供丰富的聊天体验。

GroChat 以 zip 文件形式提供。要安装它,请将其解压到您 Web 服务器路径的某个位置。文件将到达一个带有发布编号的目录中(例如,grochat-0.33),因此您可能需要将其重命名为不太冗长的名称,例如 grochat,然后再继续。在发布目录中,有一个名为 chatfiles 的子目录。里面的文本文件需要可由您的 Web 服务器写入——例如,如果您的 Apache 用户是 apache,组也是 apache,则输入

chown apache:apache chatfiles/*.txt

您可能还需要验证 Apache 用户和组是否都具有对这些文件的写入权限。除此之外,您的安装就完成了。要使用 GroChat,只需使用 http://yourserver/grochat/ 连接即可。您会发现自己进入了一个简单的登录界面(图 2)。

Cooking with Linux - When Ajax Held the World on His Shoulders

图 2. 完成简单的安装后,您就可以使用 GroChat 了。

选择一个昵称(或用户名),单击“进入聊天”,就可以开始了。文本输入字段位于屏幕顶部附近。正下方是刷新内容、向其他用户发送文件、获取帮助或注销的链接。在右上角,您可以选择隐藏信息面板(如果需要)。同样有趣的是标记为“更多选项”的链接。这允许您更改 GroChat 会话的颜色或会话语言(法语、英语和西班牙语)。这一切都很简单,但您可能需要为您的站点进行一些自定义。grochat 目录中的 config.php 文件允许您对站点进行一些控制。最有趣的项目位于文件的顶部

$this->CHAT_FILE = "chatfiles/chat.txt";
$this->CHAT_HISTORY = "chatfiles/chatHistory.txt";
$this->CHAT_SIZE = "50";
$this->SESSION_DURATION = "5"; // in minutes
$this->DATETIME_FORMAT = "G:i:s"; // php format
$this->DEFAULT_LANGUAGE = "english"; // english, french or spanish
$this->DEFAULT_SKIN = "gray"; // gray, pink or blue
$this->MAX_UPLOAD_SIZE = 2000000; // in bytes
$this->MAX_UPLOAD_POOL = 10000000; // in bytes
$this->REFRESH_TIME = 500; // in milliseconds

其中大多数都是不言自明的,但默认值可能并不适合所有人。例如,您可能希望将文件传输大小限制为 2MB 以外的其他值。当您登录到默认的 GroChat 会话时,您会注意到您在“主房间”中。在右侧,在标记为“房间列表”的框中,您会看到另外两个房间,它们被创造性地标记为“另一个房间”和“又一个”。您可以更改这些名称、添加更多房间或删除它们。这也通过 config.php 文件完成。在会话默认值下方一点,是以下文本

// Comment this variable initialisation
// to disable multiroom support
$this->EXTRA_ROOMS = array(
     array("Additional Room","chatfiles/additional.txt",
"chatfiles/additionalHistory.txt"),
     array("Another one","chatfiles/additional2.txt",
"chatfiles/additionalHistory2.txt"),

只需编辑这些内容以适应您自己的站点和需求即可。如果您觉得特别有创意,您可能想添加到软件包中包含的默认表情符号集合中。是的,这些也在配置文件中定义。

弗朗索瓦,mon ami,现在是为我们的客人续杯的好时机。我真希望你没有选择穿那件希玛申。这对我们的一些客人来说有点令人不安。

Lukasz Tlalka 的 AjaxChat 是一款稍微复杂一些的聊天程序,具有更高级的功能。该程序唯一的不足之处是您需要一个 MySQL 服务器来处理用户注册、个人信息、统计信息和房间创建等。这是一个不错的、响应迅速的应用程序,外观和使用感都很好。我已经在 Firefox 和 Konqueror 中使用过它,两者都能很好地处理这些功能。看看图 3,了解 AjaxChat 的实际效果。

Cooking with Linux - When Ajax Held the World on His Shoulders

图 3. 在 AjaxChat 会话中聊天非常流畅,根本感觉不像是在使用 Web 应用程序。

在我详细介绍之前,我应该指出 www.ajaxchat.org 网站上有两个聊天应用程序。Chat 是我在这里向您展示的程序,而 Shoutbox 是一个更简单的应用程序,缺少其 Chat 兄弟程序的一些更丰富的功能。您可以自行探索 Shoutbox。现在,让我们专注于 AjaxChat Chat。

要安装 AjaxChat,请将 tar 压缩包解压到您网站的目录结构中。生成的目录(以及关联的文件和子目录)名为 chat。如果您使用 http://www.mywebsite.dom/chat 连接到您的网站,AjaxChat 会将您带到配置对话框的第一个屏幕。这里有几个屏幕,询问数据库类型(例如 MySQL)和名称、数据库管理员和密码等等。当您填写完每个屏幕后,单击“Proceed”继续。我不会花太多时间解释 MySQL,但这里是我采取的基本步骤。首先,我创建了一个名为 chat 的 MySQL 数据库

mysqladmin -u root -p create chat

然后 mysqladmin 程序询问了我的管理员密码,然后才为我创建了数据库。接下来,我需要一个管理员名称作为我登录聊天和管理 AjaxChat 系统的用户名。为此,我通过输入以下命令进入了一个交互式 MySQL 会话mysql -u root -p。输入密码后,我发现自己进入了mysql>提示符。在该命令提示符下,我创建了一个名为 chatadmin 的管理员,并设置了一个超级秘密密码

mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON fishy.* TO 'fishyadm'@'localhost'
 ↪IDENTIFIED BY 'supersecretpassword';
mysql> FLUSH PRIVILEGES;
mysql> \q

就是这样。剩下的就只是在设置屏幕中输入适当的详细信息(图 4)。

Cooking with Linux - When Ajax Held the World on His Shoulders

图 4. 创建数据库后,其余配置步骤将通过 AjaxChat Web 界面完成。

设置完成后,访问 http://www.yourwebsite.dom/chat 将带您进入登录界面(图 5)。从那里,您可以登录或在登录前注册。此时,有两个额外的选项值得一提。统计数据将告诉您哪些房间可用、有多少用户已注册、网站上的流量以及其他一些项目,而不会涉及私人详细信息或对话。还有一个帮助链接,将向您展示聊天会话中可用的某些命令。

Cooking with Linux - When Ajax Held the World on His Shoulders

图 5. AjaxChat 登录和注册界面

用户不必注册即可加入聊天,但注册后会获得一些不错的功能。首先,您的昵称受到保护,其他人无法冒充您。此外,系统会统计您发送的消息数量、注册日期、上次登录时间等等。注册用户还可以选择一个头像来代表自己。为此,请输入/avatar在文本输入字段中。将弹出一个窗口,其中包含几个头像的列表(图 6)。这些头像包含在 AjaxChat 发行版中,位于您的 chat 目录的 img/avatars 子目录中。添加您自己的头像就像将它们添加到 avatars 子目录一样简单。但不要过度使用。大多数包含的图像都是 30x40 像素。

Cooking with Linux - When Ajax Held the World on His Shoulders

图 6. 默认情况下包含几个头像,但您可以添加更多头像,正如我的服务员的肖像所展示的那样。

AjaxChat 支持其他功能,您可以通过输入以下命令来发现这些功能/help在文本输入区域中。要与另一个用户开始私人聊天,只需单击右侧列表中的他或她的昵称。将弹出一个窗口,您可以在其中聊天,而列表中的其他人不会注意到。您还可以拥有多个房间,并在聊天室之间跳转。要配置房间,请输入/configrooms。要添加房间,请选择(或创建)一个类别名称,然后将房间添加到这些类别(图 7)。

Cooking with Linux - When Ajax Held the World on His Shoulders

图 7. 创建新房间

单击“创建房间”按钮,就可以了。您可以通过此对话框添加任意数量的房间或删除现有房间。您还可以将您创建的任何房间定义为默认房间——这是用户登录到 AjaxChat 会话时进入的房间。

所有这些聊天都让时间飞逝,mes amis。不过,还有很多酒剩下。在弗朗索瓦为你们续杯的时候,请随意继续你们的在线和离线聊天。在我们下次再次相聚之前,我会确保弗朗索瓦恢复正常,并确保他穿上比希玛申更合适的衣服。在下一次之前,请举起你们的酒杯,mes amis,让我们大家为彼此的健康干杯。A votre santé Bon appétit!!

资源

AjaxChat: www.ajaxchat.org

GroChat: grochat.sourceforge.net

Marcel's Web Site: www.marcelgagne.com

The WFTL-LUG, Marcel's On-Line Linux User Group: www.marcelgagne.com/wftllugform.html

Marcel Gagné 是一位屡获殊荣的作家,居住在安大略省滑铁卢。他是全新著作 Moving to Free Software 的作者,这是他在 Addison-Wesley 出版的第六本书。他还定期在电视节目中露面,担任 Call for Help 节目的 Linux 专家。Marcel 还是一位飞行员、前 40 强唱片骑师,撰写科幻小说和奇幻小说,并且能折出很棒的霸王龙折纸。您可以通过电子邮件 mggagne@salmar.com 与他联系。您可以从他的网站 www.marcelgagne.com 发现许多其他内容(包括很棒的葡萄酒链接)。

加载 Disqus 评论