如何在 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'。
在文档中显示,当用户创建套接字连接时,它可以创建命名空间:
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'。