npm install --save @adonisjs/websocket
然后在 start/app.js
文件中,导入 @adonisjs/websocket
并启用 websocket 支持:
const providers = [
'@adonisjs/framework/providers/AppProvider',
'@adonisjs/framework/providers/ViewProvider',
'@adonisjs/lucid/providers/LucidProvider',
'@adonisjs/session/providers/SessionProvider',
'@adonisjs/websocket/providers/WsProvider' // 加入此行
]
routes.js
文件中定义了 socket.io 的路由,例如:const Route = use('Route')
Route.get('/', ({ view }) => {
return view.render('welcome')
})
Route.get('/echo', ({ view }) => {
return view.render('echo')
})
// 添加以下路由
Route.ws('chat', 'ChatController')
ChatController
控制器中是否已经初始化了 websocket,例如:'use strict'
const Ws = use('Ws')
class ChatController {
constructor({ socket }) {
this.socket = socket
console.log('user joined with %s socket id', socket.id)
}
onMessage(message) {
console.log('received message %s', message)
this.socket.broadcastToAll('message', message)
}
onClose() {
console.log('closed socket with %s', this.socket.id)
}
}
module.exports = ChatController
// 在启动应用时初始化 websocket
Ws.channel('chat', 'ChatController')
如果以上步骤都正常,应该就可以正常使用 AdonisJs 中的 Web socket.io 了。