当前位置: 首页 > 面试题库 >

转到:服务器开始侦听后,如何启动浏览器?

方俊
2023-03-14
问题内容

在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