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

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

10631 次点击
所在节点    分享创造
93 条回复
ajaxfunction
2020-05-13 23:16:46 +08:00
哈哈,妙啊!
ChangQin
2020-05-13 23:21:55 +08:00
秀儿
lukaz
2020-05-13 23:39:45 +08:00
楼上说的直接生成图片跟楼主提到的“直接传递大体积的二进制图片”应该是一致的吧,直接用组件显示图片,跟 canvas 没啥关系
mywaiting
2020-05-13 23:40:06 +08:00
果然思路清奇~

坐等鹅厂出个图片请求白名单~
jerrodpoole
2020-05-13 23:45:16 +08:00
@lukaz #23 感谢指正,我理解错了。我理解成把数据转化成图片每个像素的二进制指了,6 楼说的是后端直接渲染出结果图片。最开始设计的时候考虑过我理解的这个版本,所以先入为主了。
uucloud
2020-05-14 01:09:00 +08:00
奇技淫巧
solaro
2020-05-14 01:21:15 +08:00
奇淫巧技
Perry
2020-05-14 01:28:12 +08:00
可以,这塞几十张图片进去应该可以传很多数据吧
9yu
2020-05-14 01:34:25 +08:00
楼主牛批
narutots
2020-05-14 09:11:29 +08:00
牛批
mclxly
2020-05-14 09:15:54 +08:00
牛 B
marvinemao
2020-05-14 09:39:48 +08:00
lz 思路牛 B 赞
Desiree
2020-05-14 09:44:59 +08:00
太骚了
molezznet
2020-05-14 09:45:45 +08:00
挺好用 就是 disk 最好是 G 啊,M 的少了吧现在
jerrodpoole
2020-05-14 09:52:13 +08:00
@molezz765 #34 感谢反馈 ,可以磁盘&内存容量少的时候用 M 多的时候用 G,下次更新加上
可能目前还有些粗糙,有什么想法欢迎反馈
wyfbest
2020-05-14 09:54:33 +08:00
妙啊!!
fancy111
2020-05-14 09:59:57 +08:00
既然都用图片了,任何信息都可以搞上去,直接服务端把信息页面生成图片,小程序每秒刷新这个图片就行了。 看起来就跟动态监控页面一样。
至于流量,其实还有更多办法可以实现。
evill
2020-05-14 10:10:19 +08:00
企鹅正在赶来的路上
igwen6w
2020-05-14 10:14:23 +08:00
wx:马上修復
fangcan
2020-05-14 10:18:03 +08:00
牛皮

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

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

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

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

© 2021 V2EX