从Go应用程序中刷新特定浏览器选项卡的最简单方法是什么?

What's the simplest way to refresh a particular browser tab from a Go application?

本文关键字:最简单 方法 是什么 选项 浏览器 应用程序 Go 刷新      更新时间:2023-09-26

我的机器上运行了一个客户端Golang应用程序。我也有一个浏览器打开,在那个浏览器中可能有一个标签运行我的web应用程序(这是完全独立于Golang应用程序)。

从Golang应用程序,我想以编程方式刷新浏览器选项卡(也许如果可能的话,把它放在前面,但这是不太重要的)。

我已经研究了很多,我得出的结论是,这是不可能仅仅通过与浏览器通信,没有标准的(特别是跨平台和跨浏览器)接口,我们可以触发浏览器的特定选项卡的刷新。

所以我想我需要在网站上运行一些自定义JS代码,我的Golang应用程序可以与之通信并触发选项卡的刷新。

最简单的方法是什么?

(我正在看liverload .js和lrserver,但这些都以有一个我们想要观看的内容文件夹为前提,并在任何更改时自动重新加载。)但我不想这样,我只是想通过编程触发刷新。此外,这个Golang应用程序不托管网站,它只是一个单独的客户端应用程序。

正如一些评论所建议的那样,似乎没有API可以通过它从Golang连接到浏览器,查询选项卡列表和刷新特定页面(至少不是跨浏览器和跨平台的方式)。

一种可能的方法是在Golang中托管一个小的WebSocket端点,并从我们想要刷新的站点连接到它。然后,每次我们想要重新加载站点时,通过WS连接发送一条消息,在JavaScript中,当我们收到消息时调用location.reload()

我在一篇博客文章中描述了所有的细节,并上传了一个完整的工作示例到GitHub。