【发布时间】:2016-02-08 15:48:20
【问题描述】:
我有一个使用 webpack-dev-middleware 和 webpack-hot-middleware 进行热模块替换 (HMR) 的 Koa 服务器,因此中间件使用 websocket 将更改推送到客户端。
但我的应用程序代码还需要在客户端和 Koa 服务器之间建立自己的 websocket 连接。我不知道如何实现这一目标?好像两者是矛盾的。我可以让它们并排吗?
我的服务器代码看起来像这样
const compiler = webpack(webpackConfig)
const app = new Koa()
app.use(webpackDevMiddleware(compiler, {
quiet: true,
noInfo: true
stats: {
colors: true,
reasons: true
}
})))
app.use(webpackHotMiddleware(compiler))
const server = require('http').createServer(app.callback())
const io = require('socket.io')(server)
io.on('connection', function() { console.log('socket connection!!') })
和我的客户类似
import Client from 'socket.io-client'
const io = Client()
io.on('connection', (socket) => {
console.log('+++ io connected! ++++')
io.on('disconnect', () => { console.log('disconnected', socket) })
})
HMR 套接字工作正常,但另一个正在尝试与
GET /socket.io/?EIO=3&transport=polling&t=1446911862461-0 并且这些请求都失败了。
如何创建不与 HMR 套接字冲突的 websocket?
【问题讨论】:
-
你是如何解决这个问题的?我遇到了类似的问题,Express 代码可以工作,但 Koa 总是产生 404
标签: node.js express socket.io webpack koa