65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 JavaScript 和 XML 编写 ASP 聊天(第 3 部分)

2004年1月22日

2分钟阅读

viewsIcon

67546

downloadIcon

1177

关于编写基于 Web 的聊天室的分步文章。本文解释了带有用户列表和注册功能的聊天室。

Sample Image - RegistrableChat.gif

引言

在这里,我添加了用户信息持久化和注册功能。将用户友好的聊天室升级为可注册的聊天室需要添加持久化的用户信息。新用户必须能够注册。现有用户可以使用用户名和密码登录。

可注册的聊天室

在开始页面,我们需要添加密码字段和指向注册页面的链接。loginUser 函数被添加了一个密码参数。在这个函数中,我们用通过用户名和密码进行用户身份验证取代了重复授权检查。如果用户名和密码正确,则创建一个新的会话。另一个重要函数是 registerUser(nick, password, firstName, lastName, email)。这两个函数使用单一存储,可以是 XML 文件或关系数据库。在本文中,我们使用 XML。

为了提高性能,XML 数据必须始终保存在内存中,并且磁盘 I/O 操作应该不频繁。之前编写的 SharedXML 类,经过一些改进,将满足这些要求。唯一需要的改进是两个函数:save(fileName)load(fileName),用于适当的将整个 XML 写入和读取到磁盘。对于访问单个节点属性,请使用 UserInfo 类。为了保持良好的架构设计,我们使用 UserDataXML 类,它封装了与 SharedXMLUserInfo 类交互的逻辑。

数据持久化算法如下。

数据加载

初始数据加载必须在应用程序启动或首次访问数据时进行。为了简单起见,我们使用 Application_OnStart 事件。

function Application_OnStart() {
    // Initial data load.

    var usersData = new UsersDataXML;
    usersData.initialize();
}

数据保存

数据保存应该在每次发生更改时执行;在我们的例子中,这仅是 registerUser 调用。如果数据更改频繁发生,那么我们应该使用自动保存机制。在这里,保存操作由相同的函数调用,但具有折射期。这意味着在保存操作期间,不会导致实际的数据写入。为了实现这种可能性,我们应该使用 UserData_autoSave() 方法。此外,在这种情况下,我们需要在应用程序终止之前最终调用一次保存数据。在 ASP 中,这是 Application_OnEnd() 例程。

请注意,XML DOM 需要的物理内存是文件大小的十倍。

另一个重要活动是提供有效的文件路径和读写访问权限。如果文件不存在,它将在第一个用户注册后由 registerUser() 方法创建。

可注册的聊天室需要具有读写权限的文件夹。它可以是 DB 文件夹,它不是 Web 应用程序的子文件夹。例如:<您的本地路径>\Samples\RegistrableChat\DB\

结论

您还在寻找更多内容吗?在下一部分中,您将看到如何创建一个具有多个房间的聊天室。

© . All rights reserved.