websocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器的全双工通讯-允许服务器主动发起信息个客户端,
websocket’是一种持久协议,http是非持久协议。
使用场景:现在很多网站都有实时推送的需求,比如聊天,客服咨询等。
早期没有websocket的时候,是通过ajax轮询,由于http请求,服务器无法给浏览器主动发送数据,因此需要浏览器定时给服务器发送请求(比如1s一次),服务器把最新的数据响应给浏览器。这种模式的缺点就是浪费性能和资源。
websocket使用
H5中使用
在HTML5中,浏览器已经实现了websocket的api,直接使用即可。
阮一峰websocket
创建websocket对象
//参数1:url:链接的websocket属性
//参数2:protocol 可选的,指定链接协议
var socket = new WebSocket(url,[protocol]);
var socket = new WebSocket('ws://echo.websocket.org')
websocket事件
-
open :链接建立时触发
-
message:客户端接受服务端数据时触发
-
error:通讯错误时触发
-
close:;链接关闭时触发
1.创建websocket服务
var socket = new WebSocket('ws://echo.websocket.org')
2.open 当和websocket服务链接成功的时候触发
socket.addEventListener('open',function*(){
div.innerHTML = '链接服务成功'
})
websocket方法
-
socket.send():使用链接发送数据
-
socket.close():关闭链接
node搭建websocket服务
配置一个基础服务器。
const ws = require('nodejs-websocket')
const PORT = 3000
//2、创建一个websocket服务
const server = ws.createServer(connect => {
console.log('用户链接上了')
//每当接受到用户传递过来的数据,这个text事件就会触发
connect.on('text',data => {
console.log('接收到用户的数据',data)
connect.send(data)
})
})
server.listen(PORT,()=> {
console.log('websocket 服务搭建成功')
})
- 模板
const ws = require('nodejs-websocket')
const PORT = 3000
const server = ws.createServer(connect => {
//接收浏览器传输过来数据
connect.on('text',data => {
})
//关闭websocket链接时候
connect.on('close',data =>{
})
//发生异常时触发
connect.on('error',data => {
})
})
//server.connections获取所有的用户
function broadcast(server,msg){
server.connections.forEach((coon) => {
coon.sendText(msg)
})
}
server.listen(PORT,()=> {
console.log('websocket 服务搭建成功')
})
socket.IO
npm install socket.io