websocket

websocket–阮一峰

基础概念

websocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。

特点

  • tcp连接,与http协议兼容
  • 双向通信,主动推送
  • 无同源限制,协议标识符是ws(加密wss)

应用场景

  • 聊天、消息、点赞
  • 直播评论(弹幕)
  • 游戏、协同编辑、基于位置的应用

ws常用前端库

  • ws(实现原生协议,特点:通用、性能强,定制性强)推荐
  • socket.io(向下兼容协议,特点:适配性强,性能一般)

基础示例 ws

web端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const ws = new WebSocket("ws://127.0.0.1:3000")
ws.onopen = () => {
// 向服务端发送数据
ws.send("hello server")
// 接收服务端发送的请求
}
ws.onmessage = (event) => {
console.log(event);
}

绑定多种时间,可以使用addEventListener
ws.addEventListener("message", function(event) {
var data = event.data;
// 处理数据
});

server端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const WebSocket = require('ws');
const wss = new WebSocket.Server({
port: 3000
})

wss.on("connection", (ws) => { // ws在这
ws.on("message", (res) => {
console.log("提供3000服务的");
console.log(res);
})
ws.send("来自客户端")
})

也可以
const ws = new WebSocket("ws://127.0.0.1:3000") // ws在这

ws.on("open", () => {
ws.send("hello web")
ws.on("message", (res) => {
console.log(res);
})
})