server.js
const http = require('http')
const { Server } = require('socket.io')
const sever = http.createServer()
const io = new Server(sever, {
cors: true,
})
io.on('connection', (socket) => {
console.log('连接成功')
socket.on('login', (data) => {
console.log(data)
})
let num = 0
setInterval(() => {
num++
socket.emit('data', `你有新的数据${num}`)
}, 1000)
socket.timeout(5000).emit('hello', 'world', (err, response) => {
if (err) {
console.log('客户端没给心跳-->')
} else {
console.log(response)
}
})
})
sever.listen(8089, () => {
console.log('8089 port is running')
})
客户端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>聊天室</title>
</head>
<body></body>
<script type="module">
import { io } from 'https://cdn.socket.io/4.7.5/socket.io.esm.min.js'
const socket = io('ws://localhost:8089')
console.log(socket)
socket.on('connect', () => {
console.log('连接成功')
socket.on('data', (data) => {
console.log(' 客户端接收服务端的消息', data)
document.body.innerHTML = data
})
})
socket.on('disconnect', (reason) => {
console.log('断开连接时触发-->', reason)
})
socket.on('connect_error', () => {
socket.connect()
console.log('尝试重连-->')
})
socket.on('hello', (arg, callback) => {
console.log(arg)
callback('got it!')
})
</script>
</html>