什么是 websocket?
websoket 是一种网络通信协议,基于 tcp 连接的全双工通信协议(客户端和服务器可以同时收发信息),值得注意的是他不基于 http 协议,websocket 只有在建立连接的时候使用到 http 协议进行连接。
websoket 有如下特点:
- 只建立一次连接,后续会一直保持连接状态
- 没有同源限制,可以跨域
- 可以接受发送任何类型数据
- 协议是 ws 或 wss,wss 是加密的,增加了 ssl 协议
通过node实现websocket
提示:使用ts实现,运行代码前需要执行如下操作
npm init
tsc --init
npm i @types/node -D
npm i ws
npm i @types/ws -D
typescript
import ws from "ws";
// 创建socket服务
const server = new ws.Server({ port: 8080 });
// 监听连接的建立
const openHandle = () => { };
// 监听连接关闭
const closeHandle = () => { };
// 监听错误
const errorHandle = () => {};
const connectionHandle = (ws: ws) => {
ws.on("message", messageHandle);
};
const messageHandle = (data: Buffer) => {
// 需要注意的是websocket拿到的是二进制数据,需要通过toString进行转换
console.log(data.toString());
// 将收到的信息广播出去
server.clients.forEach(item => {
item.send(data.toString());
});
};
server.on("open", openHandle);
server.on("close", closeHandle);
server.on("error", errorHandle);
server.on("connection", connectionHandle);