WebSocket 後端設置筆記 📝
專案背景
後端技術棧:Node.js + Express
WebSocket 套件:ws (來自 npm)
程式碼修改說明
原本的 Express 設置
import express from "express"
const app = express()
const PORT = 3300
app.listen(PORT, () => {
console.log(`server running on port ${PORT}`)
})
為什麼需要修改?
Express 的 app.listen()
雖然會在內部創建 HTTP server,但我們沒辦法直接取得這個 server 實例。而 WebSocket 需要一個可以直接操作的 HTTP server 實例來運作。
修改後的完整設置
import express from "express"
import { WebSocketServer } from 'ws'
import http from 'http'
const app = express()
const PORT = 3300
// 1. 手動創建 HTTP server
const server = http.createServer(app)
// 2. 將 server 實例傳給 WebSocket
const wss = new WebSocketServer({ server })
// 3. 使用 server 來監聽
server.listen(PORT, () => {
console.log(`Server running on port ${PORT}`)
})
錯誤示範
如果不共用 server,就需要開啟多個 port:
app.listen(3300) // HTTP 用 3300
const wss = new WebSocketServer({ port: 3301 }) // WebSocket 用 3301
共用 Server 的好處
HTTP 和 WebSocket 可以共用同一個 port
統一管理server實例
部署設定更簡單
前端連接更方便
使用多個 Port 的壞處
需要管理多個 port
需要確保所有 port 都可用
部署時需要開放多個 port
前端需要處理不同的連接
補充說明
記得要安裝 ws 套件:
npm install ws
---
碎碎念...
感謝 AI 幫忙釐清觀念,比起看到最後才發現別人說 "是錯的" 的教學文章,有 AI 即時指導真的超棒der!🙌
Last updated