cote - 如何在 cote 上仅启用 Sockend 的部分 api?
问题描述
在文档中显示,当用户创建套接字连接时,它可以创建命名空间:
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。
解决方案
您在 Responder 中定义命名空间。然后使用该属性respondsTo
定义 Sockend 公开的类型:
var cmdResponder = new cote.Responder({
name: 'CMD Responder',
namespace: 'cmd',
respondsTo: [ 'hello' ]
})
cmdResponder.on('hello', async(req) => { return 'hi' })
如果没有respondsTo
在 Responders 中设置,Sockend 本身不会公开任何类型。
在这个例子中,/cmd
命名空间只会回答“你好”。
推荐阅读
- swift - 滑动 UITableViewCell 操作会影响表格视图中的每 4 个单元格,而不是仅影响目标单元格
- android - 如何在应用启动时更新 js 文件/代码
- reactjs - 如何将 http-proxy-middleware 与 react 和 passport.js 一起使用
- docker - 生产环境中的 presto docker 容器
- eclipse - 找不到 mdb ejb3
- excel - 删除输入月份之外的日期
- firebase - 如何从 Firebase 存储地图中删除特定项目?
- javascript - 是否可以在不使用 JSON 服务器的情况下使用 Javascript 访问 JSON 文件?
- r - 如何离散化只有 2 个不同值的变量?
- excel - long 支持小数吗?