Open ChaiByte opened 2 weeks ago
一些追求 Serverless 服务的应用如 Cloudflare Workers 为了追求轻量化和极快的冷启动响应速度,只兼容了 NodeJS 运行时的一些子集,而默认支持现代浏览器原生 API 如 Fetch API. Twikoo 采用的 Pushoo.js 推送依赖于 axios 包,后者并不被当前 Cloudflare Worker 的运行时兼容,导致目前 twikoojs/twikoo-cloudflare 的 IM 推送服务失效。
axios
而 WebHook 方式目前对于大部分 Bot 都是支持的,如企业微信群机器人(且无需像自建应用一样要强制要求设置 IP 白名单)。直接支持 WebHook 能使得用户在 PUSHOO_CHANNEL 不满足需求的时候,仍然保有一种最原始的方法进行消息推送。
PUSHOO_CHANNEL
基于现有的 noticePushoo 实现,在 Notify 中支持直接 WebHook 调用:
noticePushoo
https://github.com/twikoojs/twikoo/blob/885654dee964dd17aa0ace14ab483e74f0ef7980/src/server/function/twikoo/utils/notify.js#L132-L154
需要前端和后端都做一些修改。
我在 Twikoo 的前端 UI 填入即时通知的 WebHook 地址和类型(如 WECOMBOT),后端能如期发送消息通知
Pushoo.js 项目本身是否用到了 axios 中的高级特性?如果没有用到的话,可以把相应部分完全用手搓原生 API 实现,这样能够真正服务于各种 Serverless 应用。
Pushoo.js 项目本身是否用到了 axios 中的高级特性?
没有。
fetch API需要Node.js v18.0.0,由于腾讯云Serverless使用了较旧版本的Node.js运行时,无法支持fetch API。
考虑更新pushoo,优先使用fetch,如果运行时不支持fetch,则回退到使用axios。
背景
一些追求 Serverless 服务的应用如 Cloudflare Workers 为了追求轻量化和极快的冷启动响应速度,只兼容了 NodeJS 运行时的一些子集,而默认支持现代浏览器原生 API 如 Fetch API. Twikoo 采用的 Pushoo.js 推送依赖于
axios
包,后者并不被当前 Cloudflare Worker 的运行时兼容,导致目前 twikoojs/twikoo-cloudflare 的 IM 推送服务失效。而 WebHook 方式目前对于大部分 Bot 都是支持的,如企业微信群机器人(且无需像自建应用一样要强制要求设置 IP 白名单)。直接支持 WebHook 能使得用户在
PUSHOO_CHANNEL
不满足需求的时候,仍然保有一种最原始的方法进行消息推送。请求
基于现有的
noticePushoo
实现,在 Notify 中支持直接 WebHook 调用:https://github.com/twikoojs/twikoo/blob/885654dee964dd17aa0ace14ab483e74f0ef7980/src/server/function/twikoo/utils/notify.js#L132-L154
需要前端和后端都做一些修改。
预期行为
我在 Twikoo 的前端 UI 填入即时通知的 WebHook 地址和类型(如 WECOMBOT),后端能如期发送消息通知
其它可能性
Pushoo.js 项目本身是否用到了
axios
中的高级特性?如果没有用到的话,可以把相应部分完全用手搓原生 API 实现,这样能够真正服务于各种 Serverless 应用。