前后端通信说明
前后端通信说明
微应用的前端界面与 Go 后端之间是如何相互通信的?一分钟即可了解核心机制。
极简通信模型
前端界面 (Vue / React / HTML)
│
│ window.$gm.request('方法名', { 参数 })
▼
极目桌面客户端 (主进程中转)
│
│ Unix Socket (tmp/app.sock)
▼
后端服务 (Go 守护进程)- 前端:无需关心端口或 IP,直接调用
window.$gm.request('方法名', { 参数 })。 - 极目桌面:作为安全桥梁,将请求通过本地文件套接字透传给你的 Go 程序。
- Go 后端:接收请求并处理完毕后,原路返回结果给前端。
开发者只需要做两件事
1. 后端:写一个处理函数并注册方法名
在 internal/handler/rpc/server.go 中注册你想要对外提供的方法:
// 注册名为 "getHello" 的方法
s.RegisterHandle("getHello", func(req *gsock.Request) (any, error) {
var params struct {
Name string `json:"name"`
}
rpcutil.ParseParams(req, ¶ms)
return "你好," + params.Name, nil
})内置心跳检查
模板已默认注册了 ping 方法,这是极目桌面每隔 5 秒检查后台是否存活的凭证,请保留不要删除。
2. 前端:发起调用拿到结果
在前端页面中,通过全局对象 $gm 直接调用:
// 前端调用刚刚注册的 "getHello"
const res = await window.$gm.request('getHello', { name: '开发者' });
console.log(res); // 输出: "你好,开发者"为什么不用配置端口和 IP?
- 不占用网络端口:通信通过服务器本地文件(
tmp/app.sock)进行,完全不需要占用任何 TCP/HTTP 端口,绝不会和服务器上的 Nginx、MySQL 等服务冲突。 - 免配置:开发环境与线上环境路径均由模板自动适配,你只需要专注编写业务方法。
- 天然安全:外部网络无法扫描或访问该套接字,只有极目桌面主进程可以通信。
