[eggjs/egg]egg-socket.io的默认配置

2025-11-20 830 views
4

目前为:

exports.io = {
  init: {},
  namespace: {
    '/': {
      connectionMiddleware: [],
      packetMiddleware: [],
    },
  },
};

namespace这一项 我觉得应该为{}, 否则里面始终有 '/'的配置,在某些场景下,业务层也需要取这个配置

回答

5

这里的默认配置为插件的配置信息,同时也是示例,不觉得有什么问题。 业务层需要取这个配置是指?请说一下具体的场景或者用途。

4

因为你们的插件并不总能满足所有需求,比如我现在要取namespace里面配了哪些key,然后在这些namespace上监听connection事件,但是我业务层并没有配置'/' 这个namespace 结果却取出来了,导致了一些小问题,我认为这里的'/'的默认配置是不必要的

6

但是你也要允许 我不使用默认配置吧?

5
  1. Socket.IO 实例化以后存在/命名空间, 可以不使用,但这个配置是存在的
  2. 插件的配置是为插件使用的,既然这个配置必然存在,那存在我不认为有问题

如果因业务需要不使用默认命名空间,可以认为是使用问题,既然是使用问题,或许应该考虑在业务层过滤

8

那就是插件本身依赖这个配置,或者说插件本身为了简单而没有去处理?

3

有没有默认配置对于插件来说并没有影响;默认配置起到的作用一方面是配置,另一方面是示例。

这里提出的应用场景中,即使config.io不配置,通过 io对象依然可以获得默认nsp;如果一定需要通过config.io来得到nsp,自行过滤一下即可