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