socket.io - of() 和 use() API

socket.io - of() and use() API

const spgNamespace = io.of("/spg").use(verify());

我试图找到 API of()use() w.r.t Javascript 和 socket.io。我没有成功。

我找到了这个 link:https://socket.io/docs/v3/namespaces/index.html 但是他们没有解释 API of()use().

的用法

我了解到 of() 函数与 promise 相关,但是这个 link 没有任何相关内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

这个 SO 线程说 use() 函数与 adonisJS 有关,但我的项目没有在任何地方使用这个库:

在这段代码中,io是'socket.io'的对象。

const spgNamespace = io.of("/spg").use(verify());

请解释这一行是做什么的,请指出参考文献APIs。

of() 中的方法 server.of(nsp) 初始化并检索给定的 Namespace
在这里找到它:https://socket.io/docs/v3/server-api/#server-of-nsp

方法use()namespace.use(fn)中那样注册了一个中间件函数,这是一个为每个传入的套接字执行的函数。
在这里找到它:https://socket.io/docs/v3/server-api/#namespace-use-fn


您的代码

const spgNamespace = io.of("/spg").use(verify());

意味着,你首先初始化并获取命名空间/spg,然后为获取的命名空间注册一个中间件函数。我在这里看到 2 个问题:

  • 首先:.use() 没有 return 任何东西(据我所知),所以 spgNamespace 可能会变成 undefined;
  • 其次:您将 verify() 作为中间件传递。这意味着您首先执行 verify 函数并将结果作为中间件传递给它。尝试只传递函数而不像 .use(verify) 那样执行它...而不是 .use(verify())