官網文檔: https://www.socket.coms
安裝
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>

socket