@bielu/scalar-signalr (英语)
互动 信号控制台 该插件 斯卡尔 API 参考.
它读取信号R绑定(signalr 或者说 x-signalr)从您的 AsyncAPI 文档中生成一个面板
连接到一个中枢,引用客户端到服务器的方法,并实时观看服务器到客户端的事件. 没错
作为默认的倒置替换而建 scalar.js 捆绑: 装入重新曝光
window.Scalar.createApiReference 已注册的信号R插件.
这套货包来自、并被其消耗
Bielu.AspNetCore.AsyncApi.Scalar.SignalR
.NET 软件包(它嵌入了已建的捆绑),但它也单独被发布到 npm , 这样它就可以
从CDN装入或用手捆绑.
独立使用
<div id="app"></div>
<!-- Replaces the default scalar.js bundle -->
<script src="https://cdn.jsdelivr.net/npm/@bielu/scalar-signalr/dist/standalone.js"></script>
<script>
window.__BIELU_SCALAR_SIGNALR__ = {
documents: [{ name: 'signalr', url: '/asyncapi/signalr.json' }],
}
Scalar.createApiReference('#app', {
sources: [{ url: '/asyncapi/signalr.json' }],
})
</script>
信号R文件可通过Global window.__BIELU_SCALAR_SIGNALR__
或将 Scalar 配置内置为 config.signalr。 。 。 .
程序用途
import { createApiReference, createSignalRPlugin } from '@bielu/scalar-signalr'
// Either use the wrapper (auto-registers the plugin) …
createApiReference('#app', { sources: [{ url: '/asyncapi/signalr.json' }] })
// … or register the plugin yourself on the stock Scalar API Reference:
// plugins: [createSignalRPlugin([{ name: 'signalr', url: '/asyncapi/signalr.json' }])]
认证集成
斯卡拉拥有顶级认证UI. 当用户在那里选择一个安全方案时 信号控制台自动拾取证书 连接 时间——没有单独的登录步骤 这是需要的.
要求Scalar → 2.16.12 (插件认证状态 API, 上游为 斯卡尔/斯卡尔#9639) (中文(简体) ). 在旧的斯卡拉版本上 在 API 之前,控制台连接没有证书(graceful no-op).
如何将证书映射到 SignalR 客户端
| 计划 | 地点 | 信号R映射 |
|---|---|---|
apiKey | query | 附于中枢 URL 的密钥 ?<name>=<value> |
apiKey | header | 已登录的警告 ——浏览器 WS/SSE 无法设置信头;返回查询 |
http 无记名者 | —— 说 | accessTokenFactory: () => token |
oauth2 编号 : openIdConnect | —— 说 | accessTokenFactory: () => token |
http 基础 | —— 说 | 已登录的警告 ——不能通过WS/SSE发送;在没有认证的情况下连接收益 |
方案定义从 components.securitySchemes asyncAPI 文档中。 这个
控制台将 Scalar 文档名称匹配到所选方案; 如果找不到精确的匹配
回到Scalar出口的认证状态中唯一的文档.
构建
npm install
npm run build # -> dist/plugin.js (IIFE) + dist/scalar-plugin.mjs (ESM) + dist/standalone.js + dist/types
npm run typecheck
三项建筑产出,有三项不同的合同——不能互换:
| 产出 | 合同 | 用于 |
|---|---|---|
dist/plugin.js | IIFE; 通过钩子安装 window.Scalar.createApiReference | MapScalarSignalRAssets()在斯卡拉自己的包旁边 |
dist/scalar-plugin.mjs | ES模块; 默认导出为插件,没有登记本身 | 斯卡尔的 pluginUrls 选项——Aspire包如何将控制台添加到库存容器中 |
dist/standalone.js | Scalar 预建的浏览器与附加插件捆绑 | 其它没有加载斯卡拉的页面; 替换 Scalar自己的捆绑 |
许可证
麻省理工学院