websocket
工作方式:广播和收听 # 使用场景:金融/聊天室/……
websocket:服务器支持广泛(node/java/php/c#……) 原生API操作复杂 可以使用第三方模块:socket.io 是在websocket的基础上创建的模块 优点:简单
下载
服务器端
npm i socket.io
客户端
使用
// 工作方式:事件绑定与事件触发完成发送数据与接收数据
1. 服务器(发送), 客户端(接收)
a.服务器 socket.emit("fun", data) // 服务器触发事件fun并传递参数data
b.客户端 client.on("fun", (data) => { }) //客户端绑定事件fun,并接收参数data
2. 客户端(发生), 服务器(接收)
a.服务器 socket.on("fun", (data) => { }) //服务器绑定事件fun,接收参数data
b.客户端 client.emit("fun", data) //客户端触发事件并传递参数data
示例
服务器
// 创建web服务器
var server = require("http").createServer();
// 创建io对象
var io = require("http://socket.io")(server);
// 绑定监听端口
server.listen(3000)
// 为io绑定默认事件connection: 客户端连接到服务器自动触发-- >
io.on("connection", (socket) => {
console.log("客户连接到服务器")
/**socket: 是一个对象, 与客户端通讯
触发客户端事件 / 绑定事件等待客户端触发*/
// 接收客户端数据
socket.on("abc", (data) => { })
// 向客户端发送数据
socket.emit("bcd", "你订的餐到了")
// 向客户端广播发送数据
io.emit("www", data)
})
// 客户端断开连接触发事件
io.on("disconnection", () => { })
客户端
//(1)连接服务器
var client = io("ws://127.0.0.1:3000");
//(2)接收服务器数据
client.on("bcd", (data) => {
console.log("接收到服务器数据:" + data);
})
//(3)向服务器发送数据
client.emit("abc", "快递到了");
//(4)接收服务器发送广播消息
client.on("www", (data) => {
console.log("服务器广播消息" + data);
})