官网: https://socket.io/docs/v2/client-initialization/
安装使用
npm i socket.io@2.3.0
创建一个服务端的socket
const express = require('express');const http = require('http');const path = require('path');const socketIo = require('socket.io');const app = express();const server = http.createServer(app);app.use(express.static(path.resolve(__dirname, 'public')))const options = { /* ... */ };const io = socketIo(server, options);io.on('connection', socket => {// 有一个新的客户端链接到服务器成功以后,触发事件console.log('新的客户端链接进来了');// 监听客户端的clientMsg消息socket.on('clientMsg', chunk => {console.log(chunk.toString('utf-8'));})const timer = setInterval(() => {// 每两秒钟,发送一个消息给客户端,消息名字为serverMsgsocket.emit('serverMsg', 'i am server')}, 2000);socket.on("disconnect", () => {clearInterval(timer)console.log('client closed');})});server.listen(12306, () => {console.log('server start on port 12306')});
创建一个客户端socket
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://cdn.bootcdn.net/ajax/libs/socket.io/2.0.3/socket.io.js"></script></head><body><h1>Welcome Websocket</h1><button>给服务器发消息</button></body><script>const socketIo = io.connect(); // 如果是同一个域下,可以不写地址,如果不是则需要写地址,https://server-domain.comdocument.querySelector('button').onclick = function () {socketIo.emit('clientMsg', 'msg from client')}socketIo.on('serverMsg', (chunk) => {console.log(chunk)})socketIo.on('disconnect', () => {console.log('server closed')})</script></html>
监听客户端的消息,
clientMsg是客户端和服务器商定好的消息类别,可以有很多消息类别,服务器可以根据不同的消息类别的名字,进行不同的处理// 监听客户端的clientMsg消息socket.on('clientMsg', chunk => {console.log(chunk.toString('utf-8'));})
客户端向服务器发送消息,消息类别为商定好的
clientMsg,socketIo.emit('clientMsg', 'msg from client')
服务器端向客户端发送消息和客户端向服务端发送消息一样,商定消息类别
serverMsg,const timer = setInterval(() => {// 每两秒钟,发送一个消息给客户端,消息名字为serverMsgsocket.emit('serverMsg', 'i am server')}, 2000);
客户端监听服务端消息,消息类别为商定好的
serverMsg,客户端可以根据不同的消息类别,做不同的处理socketIo.on('serverMsg', (chunk) => {console.log(chunk)})
客户端/服务端断开链接,另一方可以监听到
socket.on("disconnect", () => {clearInterval(timer)console.log('client closed');})
