基于nodejs的即时通讯系统.docx

上传人:b****6 文档编号:13703545 上传时间:2023-06-16 格式:DOCX 页数:57 大小:567.16KB
下载 相关 举报
基于nodejs的即时通讯系统.docx_第1页
第1页 / 共57页
基于nodejs的即时通讯系统.docx_第2页
第2页 / 共57页
基于nodejs的即时通讯系统.docx_第3页
第3页 / 共57页
基于nodejs的即时通讯系统.docx_第4页
第4页 / 共57页
基于nodejs的即时通讯系统.docx_第5页
第5页 / 共57页
基于nodejs的即时通讯系统.docx_第6页
第6页 / 共57页
基于nodejs的即时通讯系统.docx_第7页
第7页 / 共57页
基于nodejs的即时通讯系统.docx_第8页
第8页 / 共57页
基于nodejs的即时通讯系统.docx_第9页
第9页 / 共57页
基于nodejs的即时通讯系统.docx_第10页
第10页 / 共57页
基于nodejs的即时通讯系统.docx_第11页
第11页 / 共57页
基于nodejs的即时通讯系统.docx_第12页
第12页 / 共57页
基于nodejs的即时通讯系统.docx_第13页
第13页 / 共57页
基于nodejs的即时通讯系统.docx_第14页
第14页 / 共57页
基于nodejs的即时通讯系统.docx_第15页
第15页 / 共57页
基于nodejs的即时通讯系统.docx_第16页
第16页 / 共57页
基于nodejs的即时通讯系统.docx_第17页
第17页 / 共57页
基于nodejs的即时通讯系统.docx_第18页
第18页 / 共57页
基于nodejs的即时通讯系统.docx_第19页
第19页 / 共57页
基于nodejs的即时通讯系统.docx_第20页
第20页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于nodejs的即时通讯系统.docx

《基于nodejs的即时通讯系统.docx》由会员分享,可在线阅读,更多相关《基于nodejs的即时通讯系统.docx(57页珍藏版)》请在冰点文库上搜索。

基于nodejs的即时通讯系统.docx

基于nodejs的即时通讯系统

LANZHOUUNIVERSITYOFTECHNOLOGY

 

毕业设计

 

题目基于nodejs的即时通讯系统

 

学号10240135

专业班级计算机科学与技术

(1)班

学院计算机与通信学院

答辩日期

 

基于nodejs的即时通讯系统

InstantCommunicationSystemOfNodeBasedOnJS

 

(YangBo)

10240135

 

摘要

在社交网络飞速发展的今天,即时通讯系统越来越流行,无论是pc端还是移动客户端,几乎随处可见。

年轻人甚至中年人也不乏使用即时通讯聊天的,对于国人来说QQ是最早的聊天软件,而微信、微博、人人等即时通讯系统的兴起使人们有了更多更丰富的选择,国外的twitter更是拥有超过4亿的注册用户。

即时通讯是一种分享科技进步的方法,人们可以用它来聊天、评论,从而更加了解并贴近大众生活。

心细的我们不难发现,即时通讯技术一直随着流行技术在变化。

从一开始用C或C++

写CGI,到后来的Perl风靡一时,然后PHP如日中天并且逐渐进化出WordPress。

近些

年较为流行的RubyonRails,Python都分别有自己众多的即时通讯系统的实现。

本文的即时通讯系统主要目的是对新技术的探索。

2009年开始,NodeJS越来越吸引开发者们的眼球。

NodeJS是基于GoogleV8高

性能JavaScript引擎的服务器端JavaScript环境。

目前已经建立起一整套的开发生态环境,其他工具在Node.JS社区中均采用模块的方式实现。

我们采用了服务器端JavaScript运行时NodeJS。

Node.JS的异步I/O的特性使它具有其他技术所不拥有的优势。

本即时通讯系统主要实现了用户的登录、聊天、表情发送、图片发送、聊天字体颜色及用户在线人数功能。

关键词:

NodeJS;服务器端JavaScript;ExpressJS;异步I/0

Abstract

Intherapiddevelopmentofsocialnetworks,instantmessagingsystemsbecomemorepopular,whetheritisaPC-sideormobileclients,almosteverywhere.Youngormiddle-agedpeoplearealsousinginstantmessagingchats,QQforpeopleisoneofthefirstchatsoftware,micro,micro-blogging,instantmessagingsystems,suchastheriseofeveryonesothatpeoplehavemorechoice,foreigntwwiteralsohasmorethan400millionregisteredusers.InstantMessagingisamethodofsharingscientificandtechnologicalprogress,peoplecanuseittochat,comments,soastobetterunderstandingandclosertopubliclife.

Wearenotdifficulttofindinstantcommunicationstechnologyhasbeenaspopulartechnologychanges.FromtheverybeginningwithcorC++WritecGI,laterragePerl,PHPandgraduallyevolvedtothepointwhereWordPress.InrecentYearsapopularRubyonRails,Pythonwilleachhavetheirownnumerousinstantmessagingsystemimplementations.Instantchatsystem,themainpurposeofthispaperistheexplorationofnewtechnologies.

Beginningin2009,Node.JSandattracttheattentionofdevelopers.Node.JSisbasedontheGoogleV8Server-sideJavaScriptenvironmentperformanceJavaScriptengine.DevelopmentenvironmentcurrentlyhasestablishedawholesetofothertoolsinNode.JScommunitiesimplementedmodulesareusedin.Weuseserver-sideJavaScriptruntimeNode.JS.Node.JSAsynchronousI/OcharacteristicsofJSsothatithasnothadtheadvantageofothertechnologies.

Thisinstantmessagingsystemimplementsuserlogins,chat,send,sendpictures,chatfontcolorexpressionandfunctionofnumberofusers.

KeyWords:

NodeJS;Server-SideJavaScript;ExpressJS;AsynchronousI/O

目录

摘要II

目录IV

第一章绪论1

1.1引言1

1.2课题背景2

1.3设计的内容、目的及意义2

第二章Nodejs软件说明4

2.1Nodejs概述4

2.2Nodejs的模块5

2.3Nodejs及相关模块的安装5

2.4测试程序7

第三章系统可行性分析8

3.1技术可行性8

3.2经济可行性8

3.3系统开发运行环境8

第四章系统需求分析9

4.1系统性能需求分析9

4.2系统功能需求9

4.3系统开发原则11

第五章系统总体设计12

5.1系统设计的主要内容12

5.2采用的主要技术12

第六章详细设计14

6.1基本页面的实现15

6.2用户登录界面22

6.3发送图片22

6.4发送表情24

6.5文字颜色26

6.6按键操作28

6.7在线用户统计28

第七章系统测试30

7.1测试准备30

7.2测试过程30

7.3测试结果30

第八章软件使用说明书31

8.1产品概述31

8.2服务器启动31

8.3运行客户端31

8.4开始聊天32

设计总结33

参考文献34

附录一外文翻译(原文)35

附录二外文翻译(中文翻译)42

致谢46

第一章绪论

1.1引言

即时通讯(InstantMessenger,简称IM),是指能够即时发送和接收互联网消息等的业务。

自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。

即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。

是一种终端连网即时通讯网络的服务。

即时通讯不同于e-mail在于它的交谈是即时的。

大部分的即时通讯服务提供了状态信息的特性──显示联络人名单,联络人是否在在线与能否与联络人交谈。

近年来,随着无线通信的快速发展,移动互联网为传统的Internet注入了新的活力,同时也为即时通讯带来了一场革命,交互双方已经不再局限于以网络终端设备为唯一的接入手段,PC机在传统的网络即时通讯中所起的作用正在被手机、平板电脑所取代。

这使得即时通讯更加大众化和人性化,即使不会使用电脑的人现在也可以享受到即时通讯给人们带来的变化。

纵观即时通讯软件业的迅速发展,设计并开发一个即时通讯平台,对于现阶段的学习和研究,都是极为有意义的,基于这个前提和起因,我选择了设计即时通讯系统作为我的毕业设计。

即时通讯软件是目前计算机用户进行交流最普遍的方式之一,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。

即时通信中最基本的功能就是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。

本文分析了即时通讯系统的原理及其实现过程,探讨了Socket技术与多线程技术在不/S模式下的局域网即时通讯系统的应用。

本毕业设计就是模拟WebQQ聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。

系统主要采用不/S架构JavaScript开发平台、html5协议以及Socket等技术来完成。

主要实现的功能有登录、聊天、发送表情图片以及文件传输等功能。

系统采用,按照应用程序服务器端、应用程序客户端此设计思想,可以将任务合理分配到客户机端和服务器端从而降低了系统的通信开销。

此系统共分为两个模块:

客户端模块和服务器端模块。

通过运行、测试与分析,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。

1.2课题背景

即时通讯(InstantMessenger,简称IM),是指能够即时发送和接收互联网消息等的业务。

自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。

即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。

近年来,随着无线通信的快速发展,移动互联网为传统的Internet注入了新的活力,同时也为即时通讯带来了一场革命,交互双方已经不再局限于以网络终端设备为唯一的接入手段,PC机在传统的网络即时通讯中所起的作用正在被手机、平板电脑所取代。

这使得即时通讯更加大众化和人性化,即使不会使用电脑的人现在也可以享受到即时通讯给人们带来的变化。

在社区、论坛和普通网页中加入即时聊天功能,用户进入网站后可以通过聊天窗口跟同时访问网站的用户进行即时交流,从而提高了网站用户的活跃度、访问时间、用户黏度。

把即时通讯功能整合到网站上是未来的一种趋势,这是一个新兴的产业,已逐渐引起各方关注即时通讯除了能加强网络之间的信息沟通外,最主要的是可以将网站信息与聊天用户直接联紧在一起。

通过网站信息向聊天用户群及时群发送,可以迅速吸引聊天用户群对网站的关注,从而加强网站的访问率与回头率。

但是运用nodejs技术开发的即时通讯系统并不多,本文的即时通讯系统即是运用这种技术开发设计的,对于开发者来说它的技术实现简单易懂,对于用户来说更容易掌握,界面图形化实现能更好的服务于大众。

1.3设计的内容、目的及意义

该系统的设计内容以即时通讯的发展为背景,基于nodejs技术设计、开发的即时通讯系统。

该系统可用应用于企业局域网信息交流。

该系统设计了局域网内用户信息的交流,文件的传输等功能。

目前,即时通讯系统的流行与高速发展已经越来越快,给人们提供了更多的选择,一款好的即时通讯软件能使人们交流更加通畅便捷,从而提高人们的生活和工作效率。

聊天软件作为使用最为广泛的即时性通讯工具,它在拥有文字聊天基础功能的同时,为满户的需求,还增加了文件传输的功能,成为现在最为主流的网上应用软件。

本论文主要对聊天软件的文字聊天、文件传输功能进行分析与研究,总结出相关的理论与知识。

运用nodejs技术开发设计的即时通讯系统,实现了新技术在即时通讯方面的应用,而且也丰富即时通讯软件,使nodejs技术的优越性得到了充分的体现,为有兴趣的开发者提供了素材。

每一个流行语言的出现都会伴随着各种相关应用的诞生,而流行程度又决定了这些应用的多样性。

用PHP实现的即时通讯系统就要比用Perl实现的多得多,社区力量的比较可见一斑,JavaScript社区的影响也越来越大。

上50个最受关注的项目中13个是JavaScript相关的,可以看出JavaScript的繁荣程度。

服务器端JavaScript:

nodejs—出势必会引发一系列即时通讯系统的开发,本系统便是对此领域的探索。

第二章Nodejs软件说明

2.1Nodejs概述

Nodejs是一个可以快速构建网络服务及应用的平台。

该平台的构建是基于Chrome'sJavaScriptruntime,也就是说,实际上它是对GoogleV8引擎(应用于GoogleChrome浏览器)进行了封装。

V8引擎执行Javascript的速度非常快,性能非常好。

Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。

例如,在服务器环境中,处理二进制数据通常是必不可少的,但Javascript对此支持不足,因此,V8.Node增加了Buffer类,方便并且高效地处理二进制数据。

因此,Node不仅仅简单地使用了V8,还对其进行了优化,使其在各环境下更加给力。

V8引擎本身使用了一些最新的编译技术。

这使得用Javascript这类脚本语言编写出来的代码运行速度获得了极大提升,却节省了开发成本。

对性能的苛求是Node的一个关键因素。

Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。

Node采用了一个称为“事件循环(eventloop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。

提高服务器性能的技巧有多种多样。

Node选择了一种既能提高性能,又能减低开发复杂度的架构。

这是一个非常重要的特性。

并发编程通常很复杂且布满地雷。

Node绕过了这些,但仍提供很好的性能。

虽然让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。

不得不承认,浏览器环境限制了我们选择编程语言的自由。

任何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过Javascript来实现。

虽然还存在其他一些支持Javascript在服务器端运行的平台,但因为上述特性,Node发展迅猛,成为事实上的平台。

Nodejs可以在不新增额外线程的情况下,依然可以对任务进行并行处理——Nodejs是单线程的。

它通过事件轮询(eventloop)来实现并行操作,对此,我们应该要充分利用这一点——尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。

2.2Nodejs的模块

Nodejs使用Module模块去划分不同的功能,以简化应用的开发。

Modules模块有点象C语言中的类库。

每一个Nodejs的类库都包含了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可以很容易的创建http和tcp/udp的服务器。

在程序中使用模块是十分方便的,只需要如下:

在这里,引入了http类库,并且对http类库的引用存放在http变量中了。

这个时候,nodejs会在我们应用中搜索是否存在node_modules的目录,并且搜索这个目录中是否存在http的模块。

如果nodejs找不到这个目录,则会到全局模块缓存中去寻找,用户可以通过相对或者绝对路径,指定模块的位置,比如:

varmyModule=require('./myModule.js');

模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。

当然,可以将某些方法和变量暴露到模块外,这个时候可以使用exports对象去实现。

2.3Nodejs及相关模块的安装

下面介绍下Nodejs的安装,首先在nodejs的网站上根据操作系统下载相关的安装包,对于Windows下的安装,可以如下进行:

第一步:

下载安装文件

下载地址:

官网http:

//www.nodejs.org/download/。

第二步:

安装nodejs

下载完成后,双击node-v0.10.28-x86.msi,开始安装nodejs,默认是安装在C盘ProgramFiles文件夹下面。

第三步:

安装相关环境

打开nodejs的安装目录下你会发现里面自带了npm,直接用npm安装坏境即可进入node.jscommandprompt命令窗口。

在项目文件夹下安装相关环境

键入命令:

npminstallexpress回车等待安装express

键入命令:

npminstallsocket.io回车等待安装socket.io

安装什么组件,取决于环境搭建需求。

2.4测试程序

新建一个server.js文件,内容如下

varhttp=require('http'),

server=http.createServer(function(req,res)

{res.writeHead(200,{

'Content-Type':

'text/plain'

});

res.write('helloworld!

');

res.end();

});

server.listen(80);

console.log('serverstarted');

软件安装成功后,运行nodeserver,检查服务器端是否准备就绪,打开浏览器输入localhost就可运行。

第三章系统可行性分析

3.1技术可行性

所谓可行性分析,是关于项目的内容以及条件:

例如供应需求,设备规模,环境利益等方面进行调查和分析,预测项目完成后可能获得的经济和环境效益进行预测,提出项目是否应该投资以及运行方式的意见的一种系统分析方法。

可行性研究是为保证投资效果而在项目实施之前从经济、技术、管理等角度对项目进行的全面综合分析。

它的基本任务包括从经济视角出发进行全面的分析研究、对项目运营后所产生的经济效益进行预测、对己经确定的几种方案论证进行选择。

它的目标是合理利用资源,实现预定的社会效益与经济效益。

本文中主要讨论的是技术可行性。

主要从项目实施的技术角度,合理设计技术方案,并进行比选和评价。

NodeJS上的ExpressJS框架可以方便实现众多功能:

新建Server,配置,设置路由,通过NPM命令‘npminstall’,运行NodeJs中的NPM包即可安装。

因此,本系统的开发是完全可以实现的。

3.2经济可行性

基于局域网、B/S架构的即时通讯系统在很多资料上都能找到,包括书本和网络上都有很多类似的系统,开发这样一个系统所需要的花费不是很大,需要的开发工具、需要的软件等都可以在网上找到,不需要购买,所以不需要花费太多金钱,在经济上完全能够完成本系统的设计。

3.3系统开发运行环境

本设计是一个局域网即时通讯软件,要在短时间内开发出来并且满足客户要求,无论是硬件还是软件都要选择合适,要求如下:

开发设备完善;开发机器的性能必须稳定;操作系统的选择应该适当;开发出的程序可以在尽可能多的平台上运行;可在WindowsXP或Windows7系统中完美运行。

第四章系统需求分析

4.1系统性能需求分析

此次开发的网络聊天工具可作为企业局域网的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。

本聊天工具由服务器端程序和客户端程序两部分组成,整体采用JavaScript端平台开发,采用HTML通信协议,使用Socket技术。

服务器是可以进行监听,记录客户端请求和验证客户端身份的合法性,客户端程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能。

本聊天系统需包含如下基本功能:

(1)客户端的主要功能:

用户登录

与好友聊天

表情发送

文件传输

(2)服务器端的主要功能:

启动和关闭后台服务器

建立连接

监听客户端请求

4.2系统功能需求

聊天工具由服务器端和客户端组成,要分析清楚两方面所要完成的任务,对设计来说,等于完成了一半。

根据聊天的通信步骤,系统的功能模块如图4-1所示

返回响应

发送请求

图4-1

(1)服务器端

服务器端完成3大功能:

建立连接、断开连接、监听客户请求。

这3大功能的具体含义如下:

建立连接:

系统启动时建立连接,绑定本地计算机的一个端口,不断地监听是否有客户端请求连接或者断开连接。

断开连接:

关闭监听窗体,系统断开连接。

监听客户请求:

服务器端是个信息枢纽,所有向服务器端请求的客户端的信息都要传到服务器端,再由服务器根据客户端的请求按要求分发出去,客户端再向服务器端发送各种请求,如:

登录,退出等。

(2)客户端

客户端完成以下几大功能:

用户注册、用户登录、聊天功能、表情图片发送功能。

用户登录:

客户端与服务器建立通信通道,接收来自服务器的监听。

通过系统的登录界面,输入昵称,然后发送到服务器进行验证。

如果验证通过,则打开程序的主界面。

聊天功能:

客户在与好友建立通信连接后,便可以与好友进行聊天,聊天时发送的是文本信息。

表情图片发送功能:

用户之间可以相互发送表情和图片。

4.3系统开发原则

考虑到系统的可重用性和伸缩性,需要将本系统的网络通信底层和应用系统分离开。

这样,基于可重用的网络通信层,可以实现其他各种实时性较高的应用系统。

本系统在架构设计上分4个层次,从上到下一次为即时通讯系统、CSocket、CAsyncSocket和WindowsSocketsAPI。

本系统最底层是Socket通信层,将负责客户端和服务器之间快速的数据交换,它通过接口层和最上面应用层保持实时数据联系。

用户将通过网页进入到本系统。

Socket底层设计分两大部分:

协议设计和连接处理设计;CSocket层的目的是提供底层和系统的一个中介媒体的作用,但是不能设计的太复杂,以免延误数据传送时间。

第五章系统总体设计

5.1系统设计的主要内容

本聊天工具采用客户端/服务器端的模式来设计,可以将任务合理分配到客户端和服务器端,从而降低了系统的通信开销。

(1)客户端

客户层端也叫应用表示层,是应用程序的用户接口部分。

给聊天工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用之间的对话功能。

它用于检查用户的输入数据,显示应用的输出数据,为了使用户能直观地进行操作,客户层需要使用图形用户接口。

若聊天用户变更,系统只须改写显示控制和数据检查程序即可,而不会对影响造成影响。

数据检查的内容只限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。

(2)服务层

服务层又叫功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。

例如,用户需要检索数据,系统设法将有关检索要求的信息一次性地传送给功能表;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2