Mahiru's Humble Abode       博  客   时 间 线   归  档   关 于 与 友 链



WebSocket 与 Socket.io 总结
Published on Thu Mar 03 2022 23:00:00 GMT+0000

WebSocket

WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

(1)建立在 TCP 协议之上,服务器端的实现比较容易。

(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

使用 Socket.io

服务端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const soc = socketIo(ser);

soc.on('connection',(socket)=>{
//监听connection(用户连接)事件,socket为用户连接的实例
socket.on('disconnect',()=>{
//监听用户断开事件
console.log("用户"+socket.id+"断开连接");
});
console.log("用户"+socket.id+"连接");
socket.on('msg',(data)=>{
//监听msg事件(这个是自定义的事件)
console.log(data);//你好服务器
socket.emit('msg','你好浏览器');
//向socket用户发送信息
})
})

浏览器端

1
2
3
4
5
6
7
8
const soc = io('http://localhost:80');
//向指定的服务器建立连接,地址可以省略
soc.emit('msg','你好服务器');
//自定义msg事件,发送‘你好服务器’字符串向服务器
soc.on('msg',(data)=>{
//监听浏览器通过msg事件发送的信息
console.log(data);//你好浏览器
});