亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

利用socket.io+nodejs打造簡單聊天室

標簽:
Node.js

demo获取:

demo地址
下载后再package.json所在位置打开命令行,通过npm install安装依赖,安装好后通过node app.js 启动服务,在google浏览器中输入 localhost:3000

界面展示:

首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片。




ws说明:

在介绍socket.io之前,先简单介绍一下websocket:

Web Socket的目标是在一个单独的持久连接上提供全双工,双向通信

在JavaScript中建立了Web Socket之后,会有一个HTTP请求发送到浏览器以发送连接。取得服务器响应之后,建立的连接会使用HTTP升级从HTTP协议交换为WebSocket协议。WebSocket使用了自定义的协议,所以URL模式略有不同,未加密的是ws://,加密的是wss://,使用WebSocket的好处在于:可以在客户端和服务器端发送少量数据,减少开销,且由于全双工通信,适合即时应用。但是目前还达不到浏览器完全兼容。

Socket.IO

Socket.IO官网
官网列出了Socket.IO的四大优点:

  • 实时分析:将数据推送到客户端,这些客户端会被表示为实时计数器,图表或日志客户。

  • 实时通信和聊天:只需几行代码便可写成一个Socket.IO的”Hello,World”聊天应用。

  • 二进制流传输:从1.0版本开始,Socket.IO支持任何形式的二进制文件传输,例如:图片,视频,音频等。

  • 文档合并:允许多个用户同时编辑一个文档,并且能够看到每个用户做出的修改。
    Socket.IO对于支持ws的浏览器将采用ws通信,对于不支持ws的将采用轮询方式,所以Socket.IO是一个非常适合做即时通讯的类库。

Socket.IO API

由于Socket.IO在不同版本中,API会略有不同,所以本文介绍依赖于1.4.5版本(2016.9.8)
官网对于API及用法介绍全面,在此只做简单总结:

  • 1、安装:npm install socket.io

  • 2、客户端:客户端需引用socket.io.js

<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="/javascripts/socket.io.js"></script><script>var socket = io.connect();</script>
  • 3、服务器端:demo中服务器端采用框架express(~4.13.1),将引用模块命名为io

//引入模块var server = app.listen(3000,function(){          console.log('Express.js server listening on port'+ app.get('port'));});var io = require('socket.io').listen(server);//io使用io.on('connection', function (socket) {})
  • 4、服务器端API

io.on('connection',function(socket){});//建立连接io.sockets.emit(约定参数,data);//向全体人员广播io.emit(约定参数, data);//向全体人员广播socket.emit(约定参数,data)//发送信息socket.on(约定参数,callback);//接收信息socket.on('disconnect',callback);//用户断开连接触发事件

Socket.IO对于每一个连接用户会自动分配一个随机的,不重复的Socket#id ,通过Socket#id可以实现将信息分发给个人

var socketId = socket.id;
socket.broadcast.to(socketId ).emit('my message', msg);//socket均为connect中回调函数中的socket
  • 5、客户端API

socket.emit(约定参数,data)//发送信息socket.on(约定参数,callback);//接收信息
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消