websocket与socket.io
- http协议是单向的,无状态的
- 应答模式是客户端请求,服务器应答
- 如果想想实现这种实时聊天?
现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。
轮询是在特定的的时间间隔(如每1秒),
由浏览器对服务器发出HTTP请求,
然后由服务器返回最新的数据给客户端的浏览器。
这种传统的模式带来很明显的缺点,
即浏览器需要不断的向服务器发出请求,
然而HTTP请求可能包含较长的头部,
其中真正有效的数据可能只是很小的一部分,
显然这样会浪费很多的带宽等资源
- Nodejs处理websocket协议太简单了
在node当中第三方有 socket.io包
npm install express socket.io -S :一起安装 express 和 socket.io
安装express:
npm i express --save-dev
分开安装(socket.io包):
npm install socket.io
var io = require(“socket.io”)(server);
在页面引入(这个io.js文件自动会生成):
emit 发布 发消息
socket.emit( ‘事件’,‘消息’ )
on 兼听事件
socket.on( ‘事件’,function(message){
} )
socket.emit 只让自己收到消息
socket.broadcast.emit 除了自己其它人会收到消息
io.emit 都会收到消息