egg-socket.io无法handle路由?
先上代码: app/config/config.default.js:
config.io = {
namespace: {
'/': {
connectionMiddleware: [ 'auth' ],
packetMiddleware: [ 'filter' ],
}
},
};
app/io/middleware/filter.js:
module.exports = app => {
return async (ctx, next) => {
ctx.socket.emit('res', 'packet received!');
console.log('packet:', ctx.packet);
await next();
};
};
app/io/router.js
module.exports = app => {
// app.io.of('/')
app.io.route('chat', app.io.controller.chat.index);
};
app/io/controller/chat.js
module.exports = app => {
class Controller extends app.Controller {
async index() {
const message = this.ctx.args[0];
console.log('chat :', message + ' : ' + process.pid);
this.ctx.socket.emit('res', message);
}
}
return Controller;
};
相关代码就在这里了,下面讲出现的问题: 客户端emit消息之后,filter可以输出包的内容,内容如下:
packet: [ 'chat', 'Connect to server' ]
packet: [ 'chat', 'Hello world!' ]
packet: [ 'chat', 'Hello world!' ]
packet: [ 'chat', 'Hello world!' ]
但是对应的chat“路由”并没有执行,controller中的函数没有任何输出信息,也没有执行emit,整个的代码可以看作是完全复制了文档里的代码,搞了大半天无果,不知道有没有大佬能指点一二。谢了。
1 回复
https://github.com/eggjs/egg/issues/1789
并没有这个文件(app/io/router.js)的约定只有 app/router.js