在Go中,如何在服务器开始侦听后启动浏览器?
优选地,以最简单的方式。
到目前为止,我的代码非常笨拙:
package main
import (
// Standard library packages
"fmt"
"net/http"
"github.com/skratchdot/open-golang/open"
// Third party packages
"github.com/julienschmidt/httprouter"
)
// go get github.com/toqueteos/webbrowser
func main() {
// Instantiate a new router
r := httprouter.New()
// Add a handler on /test
r.GET("/test", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
// Simply write some test data for now
fmt.Fprint(w, "Welcome!\n")
})
//open.Run("https://google.com/")
// open.Start("https://google.com")
// http://127.0.0.1:3000/test
// Fire up the server
http.ListenAndServe("localhost:3000", r)
fmt.Println("ListenAndServe is blocking")
open.RunWith("http://localhost:3000/test", "firefox")
fmt.Println("Done")
}
打开侦听器,启动浏览器,然后进入服务器循环:
l, err := net.Listen("tcp", "localhost:3000")
if err != nil {
log.Fatal(err)
}
// The browser can connect now because the listening socket is open.
err := open.Start("http://localhost:3000/test")
if err != nil {
log.Println(err)
}
// Start the blocking server loop.
log.Fatal(http.Serve(l, r))
无需如其他答案所示进行轮询。如果在启动浏览器之前打开侦听套接字,则浏览器将连接。
ListenAndServe是一个便捷功能,可以打开套接字并调用Serve。此答案中的代码将这些步骤分开,因此可以在侦听开始之后但在对Serve的阻止调用之前打开浏览器。
我正在使用ChromeDriver V2.24,我的系统中有Chrome Browser52(未安装,可执行文件)。 NosuchSessionException:没有这样的会话 控制台: 注意:在Windows安全更新之前,当我使用ChromeDriver3.1和Chrome58时,我的脚本运行良好。更新后,我无法启动Chrome浏览器,因为它不是启动浏览器,而是在后台运行。
我已经使用命令创建了新的adonis项目 阿多尼斯新标尺 cd标尺 我没有做任何更改,我只是运行命令启动服务器。服务器已启动,但未侦听端口。当我使用“node”命令启动服务器时,它工作了,端口正在监听。我可以在哪里寻找解决一个问题,所以它将工作与adonis命令,也? 不起作用的解决方案: adonis Serve-Dev 有效的解决方案: 节点服务器
问题内容: 我一直试图找到一种方法来优雅地停止Go中的监听服务器。因为阻塞了,所以有必要关闭侦听套接字以发出结束信号,但由于没有导出相关错误,因此我无法分辨该错误以及其他任何错误。 我可以做得更好吗?请参阅下面的代码 此打印 我想隐藏消息,但是显然我不想掩盖可以报告的其他错误。我当然可以在错误测试中进行查找,但这确实很难看。我可以设置一个标志,说如果要设置,我将要关闭并忽略错误-有更好的方法吗
要运行Kafka,需要在文件。有两种设置我不理解。 有人可以解释侦听器和广告侦听器属性之间的区别吗? 留档说: 侦听器:套接字服务器侦听的地址。 和 advertised.listeners:主机名和端口代理将向生产者和消费者做广告。 我什么时候必须使用哪个设置?
问题内容: 我一直在使用带有VS Code的实时服务器来调试某些网页。一切都很好,我从页面目录中的命令行运行,Chrome打开了一个新的页面标签。 然后突然停止工作了!我虽然有点奇怪,所以我再次安装了Node.js,之后出现了一个问题。服务器正在运行,但无法打开Chrome(也无法打开其他任何浏览器) 我尝试使用BrowserSync代替实时服务器,但服务器仍可正常工作,但无法自动打开Chrome
问题内容: 哪种方法更好,直接像这样执行 或通常在类内部声明? 问题答案: 在第二段代码中,必须在调用接口的方法之前先调用属性。 在第一段代码中,您可以直接访问接口方法。 因此,如果您知道每个方法调用都会花费cpu时间,则直接在类中实现它而不是将其作为属性将是有益的。 在这种情况下,您有1个引用,可以使用该引用访问LocationListener的方法 在这种情况下,您有2个引用,一个是 Back