cs-channel
一个跨端调用通信库,让socket、web worker、iframe通信、vscode(webview
)、electron(ipcMain
、ipcRenderer
)等全双工通信调用像调用ajax(async/await
)一样马上得到处理结果:
async { const params = ... ; const data = await channel; };
连异常都能处理得非常优雅哦!
try catche
;;serverChannel.on'http_get', ;try catche
两端(客户端、服务端)同时使用,若服务端环境非nodejs(比如socket下的.NET或java),也可以使用预定的消息协议处理,不影响客户端使用(消息协议后文会说明)。
使用方法
初始化channel
实例,定义sender
发送与receiver
接收两个回调(用vscode的webview开发举例):
客户端
const vscode = ; const clientChannel = void vscode { window; } ;
服务端
const serverChannel = void panelwebview { panelwebview undefined contextsubscriptions); } ;
此举目的是适配不同场景的消息通信方案。
然后,分为两个场景:
- 客户端调服务端api
- 服务端调客户端api
// 客户端调服务端api // 服务端订阅api serverChannel; // 客户端调用api得到服务端返回的结果 const result = await clientChannel;
// 服务端调客户端api // 客户订阅api clientChannel; // 服务端调用api得到客户端返回的结果 const result = await serverChannel;
消息协议
- 13个单元测试已通过
TypeScript
静态类型约束 +d.ts
声明