聊天室似乎没有想象中那么难做

本文摘自 勾三股四 更早时期的 不老歌 博客。


最近看到一个聊天室的例子:http://css-tricks.com/jquery-php-chat/

与其说是一个聊天室的demo,不如说是借这个demo构建了一个聊天室的开发原型。

一个聊天室要有通信机制,要有身份识别机制,要有数据存储机制,要有表现机制。这差不多就可以简要概括一个聊天室的构建:

通信机制
需要Web的Ajax前台和Php后台协同工作,这里分为获取已有数据(这里是定时循环获取的)以及发送新数据(留言)这两点,额外还有一个页面初始化的操作(确定数据的起始点)。

以上三部分分别对应源代码中的:

updateChat()
sendChat(message, nickname)
getStateOfChat()

我们可以在这个模型之上,根据我们的需求进行扩展。比如可以筛选信息,管理历史记录等等。

身份识别机制
这里的身份识别仅仅是要求用户在页面打开的时候输入一个昵称,作为身份的识别——已经简单到不能再简单了。
我们可以在这个模型之上,加入账户的登录注销、密码保护、连带账户信息管理之类的内容。

数据存储机制
这里通过txt文本文件记录聊天信息,每多一条记录,就在文件后面多写一行。真是简化的一塌糊涂……
数据这边的扩展方式是多种多样、五花八门的。存储方式也应该因数据结构的不同而选择正确的存储方式,例如,文本文件可以像serverlog那样,定时或定量切割成小文件,以保证执行效率和管理成本;也可以采用数据库存储,便于历史记录的管理或多维数据关系的建立;数据结构本身可以由纯文本扩展为富文本,甚至二进制码。在此不做进一步展开讨论了

表现机制
其实我们可以把这样的消息机制包装成各种通信服务,除了最简单的聊天室,像IM、短消息、在线广播,都可以做到。同时,除了Web Client,也可以通过exe执行程序等方式的客户端进行操作。

以上是关于此聊天室demo程序的一些思考,突然觉得在软件开发中,原型设计很重要。呵呵
有点后知后觉