我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 项目源码 > Node.js+Socket.IO实现的WebSocket群聊天室源码
总共48086条微博

动态微博

查看: 3255|回复: 4

Node.js+Socket.IO实现的WebSocket群聊天室源码

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-07-11 21:11:23 |只看该作者 |倒序浏览
    软件类别:
    毕业设计>JAVAWEB
    软件大小:
    10 KB
    软件语言:
    简体中文
    资源密码:
    回复查看提取码
    更新时间:
    2016-7-11 21:17

    下载地址 (如需提取码请回复本帖,获取回复权限)




    ①科帮网的核心思想是分享,我们更愿意会员拿出资源分享获得J币;
    ②不禁止转载!只要不恶意诋毁科帮网,不大量发布广告,科帮网欢迎同行合作,共同发展!做资源站就是为了分享;
    ③科帮网资源来自于网络,不保证每个资源的完整可用,当然如果为J币充值购买,资源出现问题,可联系客服处理!

    友情提示本站毕业设计解压密码统一为本站网址www.52itstyle.com或者52itstyle.com
    更多毕业设计可加QQ群:26490602
    扫一扫关注微信公众号有惊喜!!!
    填写您的邮件地址,订阅我们的精彩内容:

    软件介绍

    ! k7 A; B. ], o+ V( {6 G% Q

    # M4 _" e2 d7 Y首先上图上实例
    0 `' r; l, A+ E1 l7 C6 g) P! Q

    6 K! R1 G# v+ W' _1 k! Z8 c* s " w, E* y2 W8 R+ E& Y8 X3 Z# n9 E

    1 |* |1 y  Z! ]% ]2 C* b5 E* n' Q0 e- g7 o4 H/ v. D/ ^
    聊天室地址:http://chat.52itstyle.com# e3 b" P1 I, A6 Q8 y0 W
    ( n2 W5 v0 v; n( g. p
    * l& ]3 ~2 b2 W4 i6 T! I
    WebSocket简介
    4 D+ q7 K7 y1 y% I3 [
    + W+ D+ c- I$ l0 H4 L' ^0 T/ A1 E; ]谈到Web实时推送,就不得不说WebSocket。在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询 (Polling)和Comet技术,Comet又可细分为两种实现方式,一种是长轮询机制,一种称为流技术,这两种方式实际上是对轮询技术的改进,这些 方案带来很明显的缺点,需要由浏览器对服务器发出HTTP request,大量消耗服务器带宽和资源。面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并实现真正意义上的实 时推送。
    " [- Q( q3 z2 P* C- S, S
    / O+ q& l: ~/ N, iWebSocket协议本质上是一个基于TCP的协议,它由通信协议和编程API组成,WebSocket能够在浏览器和服务器之间建立双向连接, 以基于事件的方式,赋予浏览器实时通信能力。既然是双向通信,就意味着服务器端和客户端可以同时发送并响应请求,而不再像HTTP的请求和响应。
    5 ]! [, @: ^  j7 w5 e, e/ Q4 o" Z. Q1 U7 H) B; L4 |
    为了建立一个WebSocket连接,客户端浏览器首先要向服务器发起一个HTTP请求,这个请求和通常的HTTP请求不同,包含了一些附加头信 息,其中附加头信息”Upgrade: WebSocket”表明这是一个申请协议升级的HTTP请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连 接。. j. K1 ?7 O7 p8 B' l
    1 ?2 B& w2 }, B" ~6 z' b& q' e" s
    项目功能分析:2 a; [7 P2 G0 n2 z8 h
    , J! q& E$ m7 `; J8 L
    1、兼容不支持WebSocket的低版本浏览器。
      S2 z0 T$ O7 J: Q) c; k3 N# v( c2、允许客户端有相同的用户名。! u3 F0 p* {# Y2 D4 m
    3、进入聊天室后可以看到当前在线的用户和在线人数。
    2 O. q5 Y( A" W) @/ W4、用户上线或退出,所有在线的客户端应该实时更新。
    / c. z: s6 X  W# v5、用户发送消息,所有客户端实时收取。# V& }# c5 T% Y, Y2 G
    ' d. r" d  {" ^! L+ T
    在实际的开发过程中,为了使用WebSocket接口构建Web应用,我们首先需要构建一个实现了 WebSocket规范的服务端,服务端的实现不受平台和开发语言的限制,只需要遵从WebSocket规范即可,目前已经出现了一些比较成熟的 WebSocket服务端实现,比如本文使用的Node.js+Socket.IO。为什么选用这个方案呢?先来简单介绍下他们两。0 x% o. s- p1 d2 ?

    + |- p, ^' C0 Z. q. l& sNode.js
    / i4 Q* Y3 K4 LNode.js采用C++语言编写而成,它不是javascript应用,而是一个Javascript的运行环境,据Node.js创始人 Ryan Dahl回忆,他最初希望采用Ruby来写Node.js,但是后来发现Ruby虚拟机的性能不能满足他的要求,后来他尝试采用V8引擎,所以选择了 C++语言。
    / [* J. q/ V; M0 \' ]8 Q* D  f- T3 B. R# k( f; {( q7 R: c; H/ K
    Node.js支持的系统包括*nux、Windows,这意味着程序员可以编写系统级或者服务器端的Javascript代码,交给 Node.js来解释执行。Node.js的Web开发框架Express,可以帮助程序员快速建立web站点,从2009年诞生至今,Node.js的 成长的速度有目共睹,其发展前景获得了技术社区的充分肯定。
    8 h* _& O1 x' J: L* W% H
    4 s/ ~' [! n) M% L- M4 ZSocket.IO
    6 F  T: d: b5 h! \  a0 t4 f$ s, DSocket.IO是一个开源的WebSocket库,它通过Node.js实现WebSocket服务端,同时也提供客户端JS库。Socket.IO支持以事件为基础的实时双向通讯,它可以工作在任何平台、浏览器或移动设备。4 P, }5 d$ Q' K0 D' u* i9 J

    $ E5 U! E% X$ x& P' H& l* K1 hSocket.IO支持4种协议:WebSocket、htmlfile、xhr-polling、jsonp-polling,它会自动根据浏览 器选择适合的通讯方式,从而让开发者可以聚焦到功能的实现而不是平台的兼容性,同时Socket.IO具有不错的稳定性和性能。( @: e- t2 n# w3 y
    + ^, D( l4 l* z
    5 V3 i' d8 g3 K5 u8 D
    如何安装Node.js) U2 b# M: `: N  m7 X

    ; Z) Z5 q) F& e( Ihttp://www.52itstyle.top/thread-21549-1-1.html. j0 V3 r$ @1 ^; c- d" w# E

      f2 o# W& a; f" c本实例采用nodejs-socketio-chat,地址为https://github.com/plhwin/nodejs-socketio-chat# y, y8 t! D+ ^+ n" I5 _, A4 T
    解压后目录中会有一个服务端和客户端,如图:
    5 j8 d& ?  k; p8 H% u; x8 f & w; I0 O4 x/ z; K; `1 ?" s
    / O+ y1 z; F$ |  q* E/ U0 o
    搭建WebSocket服务端$ F8 J! L% O- ?2 p. q

    3 E! u3 R8 ^& N8 t: C# M! Z服务器环境 centos6.5,Nginx,Node.js
    % F; V& _% d2 o! a9 K/ W& D4 v& e
    & z0 e8 P  C( v/ Q5 ?一、首先下载文件并解压
    ( [% R* ~7 m7 k" y8 ]7 N& R二、切换到server目录下执行一下操作
    1 i' v. ]. l+ h# I9 inpm install --save express
    - T6 R5 C* Y  ?8 n' w8 {npm install --save socket.io
    4 ~/ n! z2 [, F/ M2 E, t% k; p7 H3 e  B( A
    执行成功后,会在server目录下生成了一个名为node_modules的文件夹,里面分别是express和socket.io。
    & b2 S& U1 J, T0 f4 Z三、启动服务端
    3 J% ?! P9 {& C# bnode index.js& 后台运行。! e) Y, [6 V9 q3 X

    ! n3 X7 o; T& B" R; x* h搭建WebSocket客户端* v* f, N/ S' d9 i: D
    2 A3 g. ?; \, u/ N
    使用Ngin部署客户端并绑定域名9 x! {3 m7 q- W8 y3 r- A* I$ X
    1. server {
      ( |' w, L9 s" l9 y2 X9 z
    2.         listen       80;- I7 v, }% O: O5 j1 V8 U5 Q3 {6 N
    3.         server_name   chat.52itstyle.com;) F! m) f6 q; Z+ V( V
    4.         location / {3 T. Y: U: o( y: j$ h9 H
    5.    index  index.html index.htm;8 P4 Y7 M- o' h2 i" P; z
    6.    root  /home/chat/52chat/client;
      9 [# P( M) y- U9 H: g  a1 U
    7.         }0 w& I0 ?8 w6 y+ P( e0 p' B+ R
    8.         error_page   500 502 503 504  /50x.html;, X, B* P$ o' {/ |( L  z" u5 h
    9.         location = /50x.html {
      , l6 i# M# G* J0 a' ~) U0 K
    10.     root   html;, d6 G$ ?& |  g+ ?. I1 _' J
    11.         }' |$ Z, `- ?: ~3 t
    12.     }
    复制代码
    3 g  W9 p  Q6 ?) E$ ?' [. j4 K
    : Q% q( T! B4 H6 {  x; ~+ T" Y
    启动Nginx,现在就可以访问客户端了:http://chat.52itstyle.com3 n3 q+ ?; j* |

    0 ]/ \9 {+ b* V' ?- @2 J

    : n) N" q# x4 s, R9 q
    8 V8 r- B- g# S+ a

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    23

    主题

    4

    听众

    229

    金钱

    三袋弟子

    该用户从未签到

    沙发
    发表于 2016-07-12 09:27:22 |只看该作者
    很好的的很好的的
    回复

    使用道具 举报

    3

    主题

    4

    听众

    133

    金钱

    三袋弟子

    该用户从未签到

    80后 推广达人

    板凳
    发表于 2016-07-12 13:49:35 |只看该作者
    不错,支持1个!用这个Nodejs的方法实现webSocket比用Java的要简单点。
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    地板
    发表于 2016-07-12 14:09:45 |只看该作者
    昕动2014 发表于 2016-7-12 05:49( x% a$ ~4 G5 T* [# R* Q
    不错,支持1个!用这个Nodejs的方法实现webSocket比用Java的要简单点。

    # B& C; t+ [+ _' Z  @* ~5 ]昕动 把Node.js博客整理下哈
    回复

    使用道具 举报

    1

    主题

    0

    听众

    82

    金钱

    三袋弟子

    该用户从未签到

    5#
    发表于 2016-08-16 11:26:40 |只看该作者
    强力围观强力围观
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表