Skip to content

nodeJs 中并没有提供 Websocket 的相关 API

但我们可以使用第三方库ws

js
// app.js
const express = require('express')
const cors = require('cors')
const wsServer = require('./ws.js')

const app = express()
const PORT = 3000

app.use(cors())

const server = app.listen(PORT, () => {
  console.log(`Server running on http://localhost:${PORT}`)
})

server.on('upgrade', (req, socket, head) => {
  wsServer.handleUpgrade(req, socket, head, (ws) => {
    wsServer.emit('connection', ws, req)
  })
})
js
// ws.js
const ws = require('ws')
const { WebSocketServer } = ws

const wsServer = new WebSocketServer({
  noServer: true,
  path: '/api/websocket'
})

wsServer.on('connection', function connection (ws) {
  console.log('connection')
  ws.on('error', console.error)

  ws.on('message', function message (data) {
    console.log('received: %s', data)
  })

  ws.send('something')
})

module.exports = wsServer