wpe-webkit-mir-kiosk网络断开后无法自动恢复的解决方案咨询
wpe-webkit-mir-kiosk网络断开后无法自动恢复的解决方案咨询
您好!针对您在树莓派3B的Ubuntu Core 22上使用wpe-webkit-mir-kiosk做数字仪表盘时,遇到网络中断后无法自动恢复的问题,我来给您梳理几个实用的解决方案:
一、推荐:实现您设想的自动重试逻辑(本地中间页方案)
您提到的给错误页加自动刷新脚本的思路很可行,但直接修改WPE WebKit内置的错误页面比较麻烦(snap包内置文件为只读),更简单的替代方式是用本地中间页面作为入口,让它自动尝试加载目标站点,失败后定期重试:
- 创建本地重试页面
在snap的可写目录下创建HTML文件/var/snap/wpe-webkit-mir-kiosk/common/retry-page.html,内容如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>仪表盘加载中...</title> </head> <body style="text-align: center; margin-top: 50px;"> <h1>网络连接异常,正在重试...</h1> <script> const targetUrl = "https://www.mysite.com"; // 定义重试函数 function attemptLoad() { // 请求目标站点头部,判断是否可达 fetch(targetUrl, { method: 'HEAD' }) .then(response => { if (response.ok) { // 站点可达,跳转至目标页面 window.location.href = targetUrl; } else { throw new Error("站点响应异常"); } }) .catch(() => { // 失败后30秒重试 setTimeout(attemptLoad, 30000); }); } // 页面加载后立即开始尝试 attemptLoad(); </script> </body> </html>
- 配置wpe加载本地页面
执行以下命令修改snap配置,让wpe-webkit-mir-kiosk默认加载这个本地重试页:
snap set wpe-webkit-mir-kiosk url=file:///var/snap/wpe-webkit-mir-kiosk/common/retry-page.html
这样不管是开机启动还是网络恢复后,这个本地页面都会自动尝试连接目标站点,成功则跳转过去,失败则每隔30秒重试一次,完全无需手动干预。
二、系统层面:服务监控重启方案
如果您更倾向于从系统层面解决问题,可以写一个监控脚本,定期检查目标站点是否可达,一旦不可达就重启wpe服务:
- 创建监控脚本
保存以下内容为/var/snap/wpe-webkit-mir-kiosk/common/wpe-monitor.sh:
#!/bin/bash TARGET_URL="https://www.mysite.com" CHECK_INTERVAL=30 # 检查间隔(秒) while true; do # 用curl检查站点是否返回200状态码 if ! curl -s --head --request GET "$TARGET_URL" | grep -q "200 OK"; then echo "$(date): 站点不可达,重启wpe服务..." snap restart wpe-webkit-mir-kiosk fi sleep $CHECK_INTERVAL done
- 设置脚本权限并开机自启
给脚本添加执行权限:
chmod +x /var/snap/wpe-webkit-mir-kiosk/common/wpe-monitor.sh
创建systemd服务文件/etc/systemd/system/wpe-monitor.service:
[Unit] Description=WPE WebKit Kiosk Monitor After=network.target [Service] ExecStart=/var/snap/wpe-webkit-mir-kiosk/common/wpe-monitor.sh Restart=always User=root [Install] WantedBy=multi-user.target
最后启用并启动服务:
systemctl enable wpe-monitor.service systemctl start wpe-monitor.service
这个方案无需修改Web页面逻辑,直接通过系统服务强制重启恢复,但重启时会出现短暂闪屏。
三、辅助方案:WPE内置重试配置
部分版本的WPE WebKit支持调整HTTP重试次数,您可以尝试执行以下命令设置:
snap set wpe-webkit-mir-kiosk webkit-settings='{"network.http.max-retries": 10}'
注意这个配置是有限次数的重试,无法实现无限循环重试,仅适合作为辅助手段配合其他方案使用。
备注:内容来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

