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

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

10639 次点击
所在节点    分享创造
93 条回复
tmrQAQ
2020-05-14 10:28:54 +08:00
牛批
lzdyes
2020-05-14 10:35:44 +08:00
微信:好家伙
lzhnull
2020-05-14 10:37:38 +08:00
牛皮牛皮
hs0000t
2020-05-14 10:45:53 +08:00
牛啤
lazyyz
2020-05-14 10:58:55 +08:00
厉害了我的楼主
RiceS
2020-05-14 11:13:25 +08:00
牛批...
rrfeng
2020-05-14 11:16:01 +08:00
感觉应该还有更多办法……其实思路跟 jsonp 差不多吧。
小程序应该可以发很多类型的请求,这些请求里你都可以拼数据进去然后自己解码……
laydown
2020-05-14 12:02:22 +08:00
Telegram 的机器人估计更好用,楼主试试?
falcon05
2020-05-14 12:12:14 +08:00
感觉要“被修复”了
nekoyaki
2020-05-14 12:31:19 +08:00
楼主真是鬼才,,,
jerrodpoole
2020-05-14 12:46:52 +08:00
楼上好多表示了 image 接口改动的担忧,如果要求图片地址报备,要修改的小程序可能会有很多。并且这个接口还是有用的,为了这种角度刁钻的玩法改动接口没有必要,个人感觉改动的可能性不大。
tyrad
2020-05-14 12:50:35 +08:00
6,不过估计长久不了
phpfpm
2020-05-14 13:26:51 +08:00
所以你 dom 是怎么写的?
```

<img src="http://foo.bar.com/hint.svg" bindload="foo">
```
这样吗?这样的图片能被加载出来吗?

换句话说直接显示这样的图片不行吗
Vegetable
2020-05-14 13:31:14 +08:00
微信:收到,马上封!
hereIsChen
2020-05-14 13:32:14 +08:00
厉害了,还有这种操作
putaozhenhaochi
2020-05-14 13:34:57 +08:00
够骚。已 star
hereIsChen
2020-05-14 13:35:10 +08:00
哦,对了,可以用小程序的云开发,也能去请求其他服务器的内容
云端的请求时没有限制域名的
pakro888
2020-05-14 13:35:35 +08:00
厉害了,牛逼
huage2580
2020-05-14 13:36:17 +08:00
是你吗 秀儿
m0cha
2020-05-14 13:44:41 +08:00
想法新奇,学到了

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

https://www.v2ex.com/t/671337

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

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

© 2021 V2EX