这个服务器监控微信小程序,有点意思

2020-05-13 18:09:34 +08:00
 jerrodpoole

写在前面

想写一个服务器监控的网页供自己用,突发奇想能不能用小程序实现。然而遇到了一些问题,众所周知小程序请求地址必须在开发信息中手动报备并且要求域名备案。而我想实现的是可以动态添加节点,并且通过小程序直接连接到服务器,不经过第三方服务器。琢磨了一段时间做了这个,可以实现小程序和服务器的点对点连接。

特点

原理

这是一个黑魔法( hhh 开玩笑

原理很简单,是巧妙运用了小程序 image 组件的 bindload 接口,当图片加载成功时会返回图片的宽和高。也就是说一个图片能够返回两个数值,前后端约定好请求 API 后可以动态创建 image 获取一系列数值。

注意这个接口是不要求图片地址是备案域名,不用在小程序开发信息中报备。但是这种信息传递方式比较低下,只适合传递少量的信息,但是对这个需求来说足够了。

但是直接传递大体积的二进制图片很浪费带宽,解决方案是后端动态生成 svg 图片。也就是说,动态返回下面这种形式的文字信息:

<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg"></svg>

详细的实现可以看这个文件

截图给你

不是所有人都有空去打开小程序,截个图放这里,长这样:

节点列表界面

自定义主题样式界面

小程序二维码和后端 github 地址

扫码或者微信搜索 miniStatus 小程序

后端项目地址:https://github.com/axipo/mini-status

(顺手求个 star

11399 次点击
所在节点    分享创造
93 条回复
dyxang
2020-05-14 13:52:16 +08:00
这帖子不错的地方就是不仅仅只放一个小程序码,还放了预览图👍
Ritter
2020-05-14 14:15:16 +08:00
666
paoqi2048
2020-05-14 14:33:11 +08:00
🐂的
pmispig
2020-05-14 14:41:17 +08:00
楼主好骚啊,牛逼
张小龙: 收到,马上修复
itwarcraft88
2020-05-14 14:54:20 +08:00
666
ylx
2020-05-14 15:01:45 +08:00
JoeoooLAI
2020-05-14 15:35:26 +08:00
有点意思,关注看看
yulgang
2020-05-14 15:48:14 +08:00
你好骚。。。
NSAgold
2020-05-14 16:05:02 +08:00
已 star
非常有创意的实现方式!(骚的飞起)
我现在在用 server-status 探针(可乐博客修改美化版 https://www.cokemine.com/serverstatus-hotaru.html
那个是你一开始想的网页版的那种探针
speculatorA
2020-05-14 16:12:36 +08:00
玩玩看看
lizheming
2020-05-14 16:36:45 +08:00
https://imququ.com/post/use-image-to-transfer-data.html 多年前屈屈老师也折腾过这个方案~
cquyf
2020-05-14 16:42:23 +08:00
看起不错,哈哈
zhw2590582
2020-05-14 16:48:38 +08:00
既然能做到这样,那么后面可以扩展的花样就多了,妙啊。
zhw2590582
2020-05-14 16:56:36 +08:00
你要刷新一次面板,需要请求多少个 svg 才足够?
Rekkles
2020-05-14 17:03:19 +08:00
nb
int11
2020-05-14 17:03:30 +08:00
奇淫巧技
luckyrayyy
2020-05-14 17:04:25 +08:00
好骚啊
manmuy
2020-05-14 17:15:47 +08:00
牛皮~
思路清奇
winglight2016
2020-05-14 17:25:28 +08:00
传递信息的话,还是可以放在图片里的。以前记得有把图片 base64 转码之后放在 DB 里面,lz 的需求可以反向操作一下,直接把数据 base64 之后,先转 16 进制,再转成 bmp 格式,解码的时候反向操作即可。

再脑洞一下,数据可以放在 HEAD 请求的返回结果里,连图片都不需要了——不过我没写过小程序不知道能不能这么搞?
zhw2590582
2020-05-14 17:33:13 +08:00
@winglight2016 把数据放到图片简单,但这样只能通过类似 fetch 的方式异步请求,请求接口是要申报的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/671337

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX