我认为这个问题之前已被问过(可能不止一次),但我找不到它......
我正在学习Go,我想通过向"处理程序"发送一个频道来扩展经典的Web服务器示例.
我有这个标准的东西:
func hello(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "Hello world!")
}
func main() {
http.HandleFunc("/", hello)
http.ListenAndServe(":8000", nil)
}
Run Code Online (Sandbox Code Playgroud)
现在我希望"hello"函数能够在一个频道上写东西,供有人使用...我用"普通"函数完成的方法是创建一个频道:
c := make(chan string)
Run Code Online (Sandbox Code Playgroud)
并在调用函数时传递c.就像是:
dosomething(c)
Run Code Online (Sandbox Code Playgroud)
但是......如果我想要"hello"访问频道c,我该如何去做呢?
我已经创建了一个将GET请求发送到URL的应用程序,然后下载该页面的完整内容.
客户端向例如stackoverflow.com发送GET,并将响应转发给解析器,解析器具有从页面中查找需要随后的GET请求下载的所有源的可靠性.
以下方法用于发送这些GET请求.连续多次调用,解析器返回的URL.这些URL中的大多数都位于同一主机上,并且应该能够共享TCP连接.
public static void sendGetRequestToSubObject(String RecUrl)
{
URL url = new URL(recUrl.toString());
URLConnection connection = url.openConnection ();
InputStreamReader isr = new InputStreamReader(connection.getInputStream());
}
Run Code Online (Sandbox Code Playgroud)
每次调用此方法时,都会创建一个新的TCP连接(使用TCP 3次握手),然后在该连接上发送GET.但我想重用TCP连接,以提高性能.
我想,因为每次调用方法时我都会创建一个新的URL对象,这就是它的工作方式......
也许有人可以帮助我以更好的方式做到这一点?
谢谢!