我的工作内容有写网页游戏,游戏涉及到前后端通信,没找到顺手的通信包,所以手写了一个通用的 js 通信包:remote。
js
子集iframe
/ Java
服务器 等
// 远端
remote.register('something', async (params: Whatever) => {
return WhatYouWant
})
// 本地
// res === WhatYouWant
const res = await remote._.something(xxx)
由于通信双方是平等的,所以 B 调用 A 的流程也是一样的
1
humbass 4 天前
看了下不知道怎么用
|
2
xiaoming1992 OP @humbass 在这边写使用方法的话内容太多了,估计没人会看完,所以只能简单介绍一下。
使用方法见 [README.md]( https://github.com/xiaomingTang/xiaoming/blob/master/%40zimi/remote/README.md) |
3
codehz 3 天前
感觉 js 间 rpc api 用起来不如 comlink 方便哈哈(
不过要自定义通道还有 jack works 的 async-call-rpc 这些库的优点是注册方法不需要一个个去注册,直接提供一个对象就可以了 |
4
xiaoming1992 OP @codehz 我去,跟我写的 remoteValue 好像。我知识面不够广,不知道有这么个东西。。。
不过我的包不限于 webworker ,只要对方能与 js 通信,就能用这个包,简便地调用远端的函数,使用远端的值。 |
5
Leon6868 3 天前
支持异步流式回复吗?
|
6
Leon6868 3 天前
很神奇,正好在昨天我用 Gemini 搓了一个用途几乎一样的库,用于前端页面通信
|
7
xiaoming1992 OP |
8
zangbianxuegu 3 天前
没太明白,降低通信成本主要是指什么?对于普通的浏览器-服务端 http 通信
|
9
xiaoming1992 OP @zangbianxuegu 普通的浏览器-服务端通信,倒降低不了什么成本,因为浏览器和服务器的通信,一般是单向的,且频率较低,所以成本本来就不高。
这个包的应用场合是,比如你有 main 页面和 iframe 页面,现在需要在 main 页面访问 iframe 中的一些函数,用了这个包,就可以在业务里写出诸如:`await remote._.xxx(anyData)`这样的代码,像使用本地函数一样,使用远端的函数,提高代码可读性,减少格式代码。 |