官网文档: https://socket.io/
安装
npm install socket.io
服务端
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
// 设置模板引擎
app.set('views', './view');
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
// 设置静态文件托管目录
app.use(express.static('node_modules'));
app.get('/', (request, response) => {
response.render('index.html');
});
//监听客户端链接,回调函数会传递本次链接的socket
io.on('connection', socket => {
// 监听客户端发送的信息
socket.on("sentToServer", message => {
// 给客户端返回信息
io.emit("sendToClient", {message});
});
});
// 监听连接断开事件
socket.on("disconnect", () => {
console.log("连接已断开...");
});
server.listen(3000);
客户端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>how to use socket</title>
<script src='/jquery/dist/jquery.min.js'></script>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<form action="#">
<input type="text" id="message">
<button id="send">send</button>
</form>
<script>
// 1. 与服务器端建立连接
const socket = io.connect("http://localhost:3000");
// 2. 监听send按钮点击的事件
$("#send").click(function(){
// 获取输入的信息
let message = $("#message").val().trim();
// 向服务器端发送信息
socket.emit("sentToServer", message);
});
// 3. 获取服务端发送过来的信息
socket.on("sendToClient", message => {
console.log(message);
});
/**
* 发布订阅(广播), 一端发布, 可以让多端触发
*/
</script>
</body>
</html>