如何在 cote 上只为 Sockend 启用 api 的一部分?

How to enable only part of the api for Sockend on cote?

在文档中显示,当用户创建套接字连接时,它可以创建命名空间:

let socketNamespaced = io.connect('/rnd');

对于 sockend.js 服务器初始化,没有提及命名空间。

const sockend = new cote.Sockend(io, {
    name: 'Sockend',
    // key: 'a certain key'
});

据我了解,客户端选择连接到哪个名称空间。现在,为了避免安全问题,有没有办法在服务器端强制执行套接字命名空间。

例如

const sockend = new cote.Sockend(io, {
    name: 'Sockend',
    namespace: '/cmd'
});

那样的话,只有这个命名空间会暴露给套接字,并且不会有机会更改客户端命名空间并将整个 api 开放给 sockend。

您在响应程序中定义名称空间。然后使用 属性 respondsTo 定义 Sockend 公开公开的类型:

var cmdResponder = new cote.Responder({
  name: 'CMD Responder',
  namespace: 'cmd',
  respondsTo: [ 'hello' ]
})
cmdResponder.on('hello', async(req) => { return 'hi' })

如果没有在 Responders 中设置 respondsTo,Sockend 本身不会公开任何类型。

在此示例中,/cmd 命名空间将 回答'hello'。