解決http協議只能由client端發起, server端和client端可以雙向發出訊息

socket安裝→ server

$ npm install -d socket.io
// app.js

mongoose
  .connect(MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then((result) => {
    const server = app.listen(3000, () => {
      console.log("App listening on port 3000!");
    });
    // socket
    const io = require("socket.io")(server);
		io.on("connection", (socket) => {
     socket.on("send-to-all-client-message", (data) => {
      // 發送消息給client端
      socket.emit('server-to-client-message', data)
     });
    });
  })
  .catch((err) => console.log("mongoose連結異常", err));

socket安裝 → client

https://socket.io/docs/v4/client-installation/#from-npm

$ npm install socket.io-client
// 初始化 package.json
$ npm init -y
// 啟用lite-server
$ npm install -d lite-server
// pakage.json
"scripts": {
  "start": "lite-server",
},
// index.html 

const socket = io("<http://localhost:3000/>", { transports: ["websocket"] })

const sendToAllClient = () => {
  socket.emit("send-to-all-client-message", `現在時間:${new Date()}`)
}
// 接收server訊息
socket.on("server-to-client-message", data => {
  console.log('接收socket後端訊息', data)
})