什么是WebSocket?
WebSocket 是一种网络通信协议,就类似于 HTTP 也是一种通信协议。
为什么需要WebSocket?
因为 HTTP 协议有一个缺陷:通信只能由客户端发起。
接下来一起来理解WebSoke
了解WebSocket API的含义
<script>
// 创建ws实例,建立连接 (ws://121.40.165.18:8800 有广告)
var ws = new WebSocket("wss://javascript.info/article/websocket/demo/hello");
// 连接成功事件
ws.onopen = function(evt) {
console.log("Connection open ...");
// 发送消息
ws.send("Hello WebSockets!");
};
// 接受消息事件
ws.onmessage = function(evt) {
console.log("Received Message: " + evt.data);
// 关闭连接
ws.close();
};
// 关闭连接事件
ws.onclose = function(evt) {
console.log("Connection closed.");
};
</script>
socket.io
在WebSocket中socket.io是一个基于 WebSocket 的 CS(客户端-服务端)的实时通信库,使用它可以在后端提供一个即时通讯服务,它提供的也有一个 JS 库,在前端可以去链接后端 socket.io 创建的服务。
socket.io的使用
创立连接
import io from 'socket.io-client'
// 参数1:不传默认是当前服务域名,开发中传入服务器地址
// 参数2:配置参数,根据需要再来介绍
const socket = io()
如何确定连接成功
socket.on('connect', () => {
// 建立连接成功
})
如何发送消息
// chat message 发送消息事件,由后台约定,可变
socket.emit('chat message', '消息内容')
如何接收消息
// chat message 接收消息事件,由后台约定,可变
socket.on('chat message', (ev) => {
// ev 是服务器发送的消息
})
如何关闭连接
// 离开组件需要使用
socket.close()
socket.on('disconnect', () => {
console.log('连接关闭')
})