1 回答

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個贊
我不是 100% 確定這是唯一的方法,但可能會有所幫助,所以我將其發(fā)布?;谶@個答案,我會選擇使用相同端口進(jìn)行 http 和 websocket 連接的服務(wù)器。你可以像這樣實(shí)現(xiàn)它:
const { createServer } = require('http')
const ws = require('ws')
const express = require('express')
const app = express()
const server = createServer(app)
app.get('/', (req, res) => {
res.send('I am a normal http server response')
})
const wsServer = new ws.Server({
server,
path: '/websocket-path',
})
wsServer.on('connection', (connection) => {
connection.send('I am a websocket response')
})
server.listen(3030, () => {
console.log(`Server is now running on http://localhost:3030`)
console.log(`Websocket is now running on ws://localhost:3030/<websocket-path>`)
})
因此,您的服務(wù)器在端口 3030 上偵聽正常的 http 請求。如果它在路徑 '/websocket-path' 上收到一個 websocket 連接請求,它會被傳遞給 ws 連接處理程序,然后你就可以開始了。
添加回答
舉報(bào)