11 个版本 (2 个稳定版)
1.1.0 | 2022年3月6日 |
---|---|
1.0.0 | 2022年2月1日 |
0.5.0 | 2022年1月8日 |
0.4.1 | 2022年1月8日 |
0.1.1 | 2021年11月27日 |
#1198 在 WebAssembly
164 每月下载量
用于 12 个Crate(直接使用10个)
95KB
2.5K SLoC
WASM通用总线
WASM通用总线实现了WebAssembly库和可执行文件用于调用和接收WASM模块与/或操作系统函数的标准syscall接口。
目前WASM总线由以下运行时支持
- Tokera终端 (https://tokera.sh/)
此总线支持的功能包括
- WebSocket连接
- HTTP和HTTPS调用
- 启动子进程
- 线程休眠和超时
- 异步运行时引擎
- 客户端调用WASM模块
待办事项
- 启动线程
- 多线程运行时引擎
- 通用日志
- 服务器端调用WASM模块
后端实现
为了在您的运行时实现此总线,您需要链接到库中公开的ABI并实现这些函数。
参考实现请见以下
https://github.com/tokera-com/ate/tree/master/tokterm/src/bus
示例API
以下是如何为特定API生成辅助类和序列化对象的简单示例
use wasm_bus::macros::*;
#[wasm_bus(format = "json")]
pub trait Time {
async fn sleep(&self, duration_ms: u128);
}
相对对象
还可以生成一系列子API,它们携带一些特定的上下文
use serde::*;
use std::sync::Arc;
use wasm_bus::macros::*;
#[wasm_bus(format = "bincode")]
pub trait SocketBuilder {
async fn connect(
&self,
url: String,
state_change: impl Fn(SocketState),
receive: impl Fn(Vec<u8>),
) -> Arc<dyn WebSocket>;
}
#[wasm_bus(format = "bincode")]
pub trait WebSocket {
async fn send(&self, data: Vec<u8>) -> SendResult;
}
测试
您可以通过上传到wapm.io并转到Tokera Shell来测试您的WASI程序
依赖项
~3.5–5.5MB
~97K SLoC