如何实现网页聊天室?

发布时间: 10:19:07 来源:亿速云 阅读:110 作者:小新 栏目:

这篇文章主要介绍了PHP如何实现简单聊天室,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一,聊天室模块实现1,聊天室主页面窗口设置

2,文件操作函数本聊天室模块使用文本来保存用户列表和发言信息,主要考虑对文件的操作在速度上要优于对数据库的操作。

mode:必须,规定要求到该文件/流的访问类型。
context:可选。规定文件句柄的环境,context是可以修改流的行文的一套选项
mode参数的取值:"r":只读方式打开,将文件指针指向文件头。
"r+":读写方式打开,将文件指针指向文件头。
"w":写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建。
"w+":读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建。
"a":写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建。
"a+":读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建。"x":创建并以写入方式打开,文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建。"x+":创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建。

(2)fclose()函数,关闭打开的文件语法:fclose(file)参数:file:必须,规定要关闭的文件。file参数是一个文件指针,fclose()函数关闭指针指向的文件。文件指针必须有效,并且是通过fopen()或fsockopen()成功打开的文件。如果成功则返回true,否则返回false。

file:必须,规定要读取的文件
length:可选,规定要读取的字节数,默认是1024字节。从file指向的文件中读取一行并返回长度最多为length-1字节的字符串。碰到换行符(包括在返回值中)、EOF或者已经读取了length-1字节后停止。如果没有指定length,默认为1K,或者说1024字节。若失败,则返回false。
file(path,include_path,context),将文件作为一个数组返回,数组中的每个单元都是文件中相应的一行,包括换行符在内。若失败,则返回false。
path:必须,规定要读取的文件。
context:可选。规定文件句柄的环境。context是一套可以修改流的行为的选项,若使用null,则忽略。
path:必须,规定要读取的文件
context:可选,规定文件句柄的环境。context是一套可以修改流的行为的选项。若使用null,则忽略。
start:可选,规定在文件中开始读取的位置。
max_length:可选,规定读取的字节数。

(4)写入文件函数写入数据也是PHP中常用的文件操作,在PHP中可以使用fwrite()和fputs()函数向文件中写入数据。fputs()函数是fwrite()函数的别名。他们的用法相同。
string:必须,规定要写入的文件的字符串。
length:可选。规定要写入的最大字节数。
fwrite()把string的内容写入文件指针file处。如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止。发write()返回写入的字节数,出现错误时则返回false。

filename:必须,规定要删除的文件;
context:可选,规定文件句柄环境。context是可修改流的行为的一套选项。

4,滚屏显示时滚动条定位技术聊天室中的滚屏功能,最新发言信息是显示在页面的最底部,而每次刷新时,页面焦点都被定位到最上面。滚动条的定位可分为整个页面窗口的滚动条和页面元素中的滚动条.

(1)窗口中的滚动条窗口中的滚动条可以通过scroll()函数来实现定位。
语法:window.scroll(x,y)参数x表示滚动条水平位置的坐标。参数y表示滚动条垂直位置的坐标。如果要将滚动条置底,那么只要将y的值设置大一些即可。

(2)页面元素中的滚动条页面元素中的滚动条可以用scrollTop属性来实现定位。scrollTop属性表示当前对象的顶点距离其最外层对象元素的距离。语法如下:
object.scrollTop=distance;在聊天室公共窗口中的滚屏效果,就是使用的该属性来定位滚动条。公共窗口使用一个div层来显示聊天信息。首先将div层的纵向滚动条设为自动,横向滚动条设为无并自动换行。

在Javascript中设置纵向滚动条的scrollTop属性等于它滚动高度(定位到聊天窗口的最下面)

感谢你能够认真阅读完这篇文章,希望小编分享的“PHP如何实现简单聊天室”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

《Java web聊天室系统的设计与实现毕业答辩论文》由会员分享,可在线阅读,更多相关《Java web聊天室系统的设计与实现毕业答辩论文(41页珍藏版)》请在装配图网上搜索。

1、码农毕业设计下载网:学号:本 科 毕 业 论 文(设 计)Java web聊天室系统的设计与实现作者姓名指导教师所学专业软件工程(嵌入式)班级11嵌入式班所属院系 信息学院学习年限2011年 9月至2015年 6月二一五年 五月- 1 -目 录摘要- 1 -Abstract- 1 -1、引言- 1 -2、应用需求分析与可行性分析- 1 -2.1 应用需求分析- 1 -2.2

-6.2.1 测试的重要性及目的- 1 -6.2.2 测试的步骤- 1 -6.2.3 测试的主要内容- 1 -结束语- 1 -致谢- 1 -参考文献- 1 -摘要本文从理论和实际案例分析了网上聊天系统,比较的分析了当

4、今网络上建立动态网页的几种语言,及其优缺点。以及网上聊天系统所选用的数据库。当今社会,计算机网络已经成为人们生活中不可缺少的一部分,人们从互连网上获取信息与朋友交流,网络应用越来越广泛,而网站如雨后春笋般地一个接着一个冒出来,因为提供静态信息的HTML网页并没有办法达到与用户交互的目的,所以才出现了各种交互式网页技术。要建设一个聊天室,首先,这个聊天室的整体概况要在我们脑海中要有一个初步的影像,在众多的公共聊天室中,其核心无非是:1、聊天者把语句写入文本或数据库;2、浏览器不断的对文本或数据库进行刷新、读取;3、实时更新在线的客户;4、管理员对聊天者进行踢或IP禁止操作。本聊天室系统由JSP技

Chatroom1、引言聊天室(Chat Room)是WWW世界中最常见的服务,最早的起源来自于BBS站点,除了在线Talk之外,的确是漫漫长夜打发时间的最佳消遣。“互通有无、排忧解难”也是聊天室的另一个功能;其次便是当成传递信

10、息的渠道;如果更新的时间够快的话,聊天室还可以发展成为“在线会议”(类似NetMeeting的功能),其优点真是一言难尽。虽然在市面上早已出现了“聊天室”的应用软件,例如:Microsoft Chat,其使用界面及功能也已经十分完善,不过它总是一套独立于浏览器之外的套装软件,上手之前还要先熟悉操作方法才能登堂入室,对于没有时间学习的网友来说,这总是不方便,所以越来越多的网站开发出根植于浏览器之上的“聊天室”,以便造福更多的网友。2、应用需求分析与可行性分析2.1 应用需求分析服务器硬件处理器:Intel 酷睿内 存:256M 或更大硬 盘:20G 或更大软件Microsoft

MB(RAM)、500MB(HD)。系统运行时对数据的保密性要求不高对一般的数据不要求进行加密。此外,对其它软件几乎没有依赖性,程序健壮性较好2.2 运行需求分析硬件条件:酷睿 CPU、2G RAM、100G硬盘以上的PC机;打印机;局域网。软件条件:Windows 7

12、。 2.3 其他需求分析本系统有较好的可维护性、可靠性、可理解性、效率。易于用户理解和操作。可维护性包括了可读性、可测试性等含义。可靠性通常包括正确性和健壮性。开发过程中,在各种矛盾的目标之间作权衡,并在一定的限制的条件下(经费、时间、可用的软、硬件资源等),使上述各方面最大限度的得到满足。2.4 可行性分析2.4.1经济可行性经济可行性研究是对组织的经济现状和投资能力进行分析,对系统建设运行和维护费用进行估算,对系统建成后可能取得的社会和经济效益进行估计。由于本系统是作为毕业设计由我们自己开发的,在经济上的投入甚微,系统建成之后将为今后实现系统功能提供很大的方便,估算新系统的开发费用和今后的

13、运行、维护费用,估计新系统将获得的效益,并将费用与效益进行比较,看是否有利。开发、运行和维护费用主要包括:购买和安装设备的费用:计算机硬件、系统软件、 机房、电源、空调等;软件开发费用:若由实习单位的技术人员开发,则该项费用可以计入下面的人员费用一项;人员费用:系统开发人员、操作人员和维护人员的工资、培训费用等;消耗品费用:系统开发所用材料、系统正常运行所用消耗品,例如水、电费,打印纸、软盘、色带等开支。所有开支都不大,所以经济上是可行的。2.4.2技术可行性技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本科生实习管理系统用的是JSP开发语言,调试相对

14、简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。2.4.3 运行可行性对新系统运行后给现行系统带来的影响(包括组织机构、管理方式、工作环境等)和后果进行估计和评价。同时还应考虑现有管理人员的培训、补充,分析在给定时间里能否完成预定的系统开发任务等。运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。当前我们公司信息化技术已经相当普及,各类操作人员水平都有相当的高度,所以在运行上是可行性的。本系统的开发

15、,是典型的Mis开发,主要是对数据的处理,包括数据的收集,数据的变换,及数据的各种报表形式的输出。采用流行的JSP+SQLSERVER体系,已无技术上的问题。2.4.4 时间可行性从时间上看,在两个月的时间里学习相关知识,并开发网站,时间上是有点紧,但是不是不可能实现,通过两个多月的努力功能基本实现。2.4.5 法律可行性: 所有技术资料都为合法。 开发过程中不存在知识产权问题。 未抄袭任何网站,不存在侵犯版权问题。 开发过程中未涉及任何法律责任。综上所述,本系统的开发从技术上、从经济上、从法律上都是完全可靠的。2.5 系统开发步骤一般说来,管理信息系统的建立与应用可以划分成总体规划、系统开发

16、和系统运行三个阶段,其中系统开发阶段还可进一步分为系统分析、系统设计和系统实施等工作环节。上述各个阶段排列成一个严格的线性开发序列,在每个工作阶段均产生完整的技术文档作为下一阶段工作的指导和依据,每一阶段都应对文档进行评审,确信该阶段工作已完成并达到要求后才能进入下一阶段,同时在以后的工作中不能轻易改变前面经过评审的成果。上述开发方式的主要优点是便于开发工作的组织和管理,并且可大大降低管理信息系统开发的复杂性。国内外许多系统开发的实例都证明这是一种行之有效的开发方式。国外曾有人对一些软件项目开发各阶段的工作量进行了统计,结果表明,在开发过程中各工作阶段所占全部工作量的比重分别达到系统分析:系统

17、设计:编程:模块调试:系统调试20%:15%:20%:25%:20%。由此可见,程序编写在开发工作中只占很小比例,而调试工作却占整个开发工作量的一半左右,因此“系统开发就是编程”的习惯说法显然是片面的。另据统计,在建立管理信息系统的三个阶段中,总体规划和系统开发阶段的工作量约占整个工作量的2/3,而运行、维护阶段要占1/3,这说明一个管理信息系统开发后,仍应十分重视它的维护工作,以便使系统不断完善并充分发挥其作用。3、相关技术简介3.1

用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同

19、JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。 JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP主要优先如下:(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比JSP/PHP的局限性是显而易见的。 (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP

20、,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 (4)多样化和功能强大的开发工具支持。这一点与JSP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。3.2 SQL Server 关系数据库简介SQL

3丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。 4SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffi

22、ce产品集成。 5具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。 6对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。 7SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。 3.2.2 SQL Server 2000新特性

23、tivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个

24、程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且

25、具有简单、严格类型定义且高性能实现的接口。4、系统分析4.1系统功能要求4.1.1 在线聊天室的要求登陆,公聊,私聊,离开聊天室管理员可以查看聊天者的IP地址,可以踢人,可以添加,修改,删除聊天者的资料。4.1.2 在线聊天室的管理子系统要求对数据库中的在线用户信息进行管理。对数据库中的非在线用户信息进行管理。对数据库中的聊天信息进行管理。4.2系统性能要求系统的性能要求一般包括:计算和查询响应时间、处理容量、存储容量、人机交互的友好性、系统的安全性、可靠性以及容错能力等,如果是网络系统还应包括系统传输交换能力。本系统非网络系统,所以符合系统的一般性能要求即可。系统的性能要求应从以下几个方面确

26、定:(1)容量要求:确定系统的容量要求,如处理的记录数和处理数据的最大容量等(2)精度要求:确定系统的精度要求,如数据或数值检索的精度要求、数据传输的精度要求等。(3)时间特性要求:确定系统的时间特性要求。如处理时间、响应时间及其峰值负载期间允许偏离范围,系统各项功能的顺序关系,由于输入类型的不同和操作方式的变化引起的有限顺序的变化。(4)适应性要求:必须指明反映系统环境变化的系统适应能力和系统适应能力的各种参数。说明当需求发生变化时系统的适应能力,指出为适应这些变化而需要设计的软件和过程。 (5)人机交互友好性:要有适应与用户特点的智能化人机交互界面,便于用户操作使用。 (6)系统可靠性:为

27、提高系统可靠性必须采用模块化、结构化设计,需要对容错处理的模块提供备份,以减少系统故障。 (7)系统可维修性:系统应具有奥好的可维修性,以便在系统故障时能迅速恢复运行。本系统应具有如下性能:(1)数据库系统的扩充能力(2)快速的信息交换能力(3)快速的响应能力(4)具有较大的数据存储能力(5)系统迅速恢复能力4.3系统功能模块图4.3系统流程图4.3程序ER图5、数据库设计在线聊天室系统是一个数据库应用系统,系统的所有信息都是保存在数据库中。在数据库应用系统的开发中,数据库的结构设计是一个非常重要的问题。我们这里所说的数据库结构设计是指数据库中各个表结构的设计,包括信息存在哪个表中、各个表的结

28、构如何以及各个表之间的关系。 数据库结构设计的好坏,将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等。由于数据库设计的重要性,人们提出了许多数据库结构设计的技术。但这些方法和设计者的工作经验有很大的关系。因此要从根本上解决所有数据库结构设计的问题,就需要多实践,在实践中积累经验和教训,最终成为数据库结构设计的专家。5.1数据库需求分析数据库结构设计的第一个阶段,也是非常重要的一个阶段时数据库需求分心。在这个阶段主要时收集基本数据以及数据处理的流程,为以后进一步设计打下基础

29、。5.1.1内容调查应用系统用户所需要操作的数据,决定在数据库中存储什么数据。5.1.2处理调查应用系统用户要求对数据进行什么样的处理,理清数据库中各种数据之间的关系。5.1.3数据项包括名称、含义、类型、取值范围、长度以及和其他数据项之间的逻辑关系。5.1.4数据结构若干个数据项有意义的集合,包括名称、含义以及组成数据结构的数据项。5.1.5数据流指数据库中数据的处理过程,包括输入、处理和输出。本设计通过对聊天室内容和过程分析,设计的数据项和数据结构如下用户基本情况:包括的数据项有姓名、性别、年龄、昵称等。基本用户情况。包括的数据项有用户ID、注册用户详细地址、OICQ号等。5.2数据库逻辑

30、结构设计概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用的设计.也就是要将概念上的结构转化为数据库系统所支持的实际数据模型。第一种转化是将实体转化为关系表。这种转化比较简单,只需要将实体的属性定义为表的属性即可。第二种转化是联系的转化。即将各个实体之间的联系转化为表格之间的关系,如外部键的定义。在上面工作的基础上的基础上归纳出人员管理数据库表格的组成、列的属性、表格之间的联系等等。该数据库系统要求具有以下方面的特点:结构合理;所建立的数据冗余度小,独立性强;建档、修改、查询、统计快准确;保密性、可靠性好。聊天室系统中各个表格的设计结果如下面的各表格所视。每个表

31、格表示数据库中的一个表。5.3 数据库表的创建列名数据类型说明ID主键自动编号包含一个作为记录识别标志的长整数的数字域。采用自动编号。是用户表的主索引。Name文本包含用户ID的文本域。IP文本包含用户计算机当前IP的文本域。呢称文本包含用户的呢称的文本域。Color文本包含用户发言时字体的颜色的文本域。表情文本包含用户表情的文本域说话对像文本包含用户对像的文本域说话文本包含用户说话内容的文本域动作文本包含用户动作的文本域列名数据类型说明Id主键自动编号包含一个作为记录识别标志的长整数的数字域。采用自动编号。是用户表的主索引。Name文本包含用户ID的文本域Logintime日期/时间包含用户

32、性别的布尔变量。Sex文本包含用户登录时间的日期变量6、详细设计与编码实现6.1系统需要解决的主要问题在规划设计聊天室时,首先要确定好谈话内容存储方式,JSP可以用三种形式实现聊天内容的存取:1)用全局变量Application和Session对象实现。这种形式速度快、效果好,但较消耗系统资源。2)用读写数据库的方法实现。这种方法相对简单,但会使数据库负担重。本系统采用的就是该方法。本设计选择了sql server 2008数据库来存储谈话内容。3)用读写文本文件方法。该方法适合简单的聊天室。另一个设计聊天室时要考虑的因素就是聊天室成员的动态刷新。有的用户在退出聊天室时并不是从退出链接退出的,

33、但服务器并不知道用户已经离开了。因此需要建立一个在线用户数据库,每隔一段时间检查一次,看用户从最后一次发言到现在是否超时,若是,则将该用户自动删除。6.2系统功能的具体设计6.2.1 用户登陆注册用户登录模块是前台的一个重要模块,用户注册后输入正确的帐号和密码才能登录系统,登录成功后用户可以点击注销,可以修改登录密码等功能。以下是该页面的主要代码function

选择房间在用户登陆后系统将跳转到聊天房间的选择界面,在此界面用户可以自由选择当前聊天室内的所有房间,并且可以看到聊天室内的用户个数。 15 * 24 * 3600 * 1000) sql = update chatuser set lo

欢迎光临我们的聊天室,本聊天室人数无上限!每隔5秒钟刷新一次聊天记录,每隔2分钟刷新一次用户列表。 请不要在本聊天室内散布反动言论或者进行人身攻击,否则将被踢出聊天室。请选择聊天室: 环游世界(人)校园时光(人)IT论坛(人) inputtype=hidd

37、en name=nickName value= 6.2.3 查看聊友查看聊天室内在线的好友信息在线聊友列表用户名所在聊天室登陆时间笑傲江湖同桌的你程序员之家6.2.4 聊天在聊天室内进行聊天互动,在此界面也可以选择到其他的聊天室。主要代码:alert(你已发呆的太久了);parent.location=index.jsp;15*60*1000)

我要回帖

更多关于 聊天室软件 的文章