本文整理汇总了Golang中net/http.Server.Serve方法的典型用法代码示例。如果您正苦于以下问题:Golang Server.Serve方法的具体用法?Golang Server.Serve怎么用?Golang Server.Serve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net/http.Server
的用法示例。
在下文中一共展示了Server.Serve方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: InitWebsocket
func InitWebsocket(addrs []string) (err error) {
var (
bind string
listener *net.TCPListener
addr *net.TCPAddr
httpServeMux = http.NewServeMux()
server *http.Server
)
httpServeMux.Handle("/sub", websocket.Handler(serveWebsocket))
for _, bind = range addrs {
if addr, err = net.ResolveTCPAddr("tcp4", bind); err != nil {
log.Error("net.ResolveTCPAddr(\"tcp4\", \"%s\") error(%v)", bind, err)
return
}
if listener, err = net.ListenTCP("tcp4", addr); err != nil {
log.Error("net.ListenTCP(\"tcp4\", \"%s\") error(%v)", bind, err)
return
}
server = &http.Server{Handler: httpServeMux}
if Debug {
log.Debug("start websocket listen: \"%s\"", bind)
}
go func() {
if err = server.Serve(listener); err != nil {
log.Error("server.Serve(\"%s\") error(%v)", bind, err)
panic(err)
}
}()
}
return
}
示例2: ServeFd
// ServeFD creates an http.Server and sets it up to serve given a socket activated
// argument.
func ServeFd(addr string, handle http.Handler) error {
ls, e := systemd.ListenFD(addr)
if e != nil {
return e
}
chErrors := make(chan error, len(ls))
// We don't want to start serving on these sockets until the
// "initserver" job has completed. Otherwise required handlers
// won't be ready.
<-activationLock
// Since ListenFD will return one or more sockets we have
// to create a go func to spawn off multiple serves
for i := range ls {
listener := ls[i]
go func() {
httpSrv := http.Server{Handler: handle}
chErrors <- httpSrv.Serve(listener)
}()
}
for i := 0; i < len(ls); i += 1 {
err := <-chErrors
if err != nil {
return err
}
}
return nil
}
示例3: NewHttpService
func NewHttpService(context interface {
Acquire()
Release()
}, server *http.Server) (s *HttpService, err error) {
s = &HttpService{}
addr := server.Addr
if addr == "" {
addr = ":http"
}
s.listener, err = net.Listen("tcp", addr)
if err != nil {
return
}
var w sync.WaitGroup
w.Add(1)
context.Acquire()
go func() {
defer context.Release()
l := s.listener
w.Done()
server.Serve(l)
}()
return
}
示例4: NewHTTP
// NewHTTP returns a ListenProxy with a http as the listening service. This is
// a convenience wrapper kept in place for compatibility with older checkouts.
// Might be removed in the future.
func NewHTTP(handler http.Handler) *ListenProxy {
lp := NewListenProxy(checker, 10)
httpServer := http.Server{Addr: ":http", Handler: handler}
go httpServer.Serve(lp.Listener())
return lp
}
示例5: HandleRoot
func HandleRoot(w http.ResponseWriter, r *http.Request) {
originalListener, err := net.Listen("tcp", ":8090")
if err != nil {
panic(err)
}
sl, err := customListener.New(originalListener)
if err != nil {
panic(err)
}
http.HandleFunc("/", helloHttp)
server := http.Server{}
stop := make(chan os.Signal)
signal.Notify(stop, syscall.SIGINT)
var wg sync.WaitGroup
go func() {
wg.Add(1)
defer wg.Done()
server.Serve(sl)
}()
fmt.Printf("Serving HTTP\n")
select {
case signal := <-stop:
fmt.Printf("Got signal:%v\n", signal)
}
fmt.Printf("Stopping listener\n")
sl.Stop()
fmt.Printf("Waiting on server\n")
wg.Wait()
}
示例6: ListenAndServeTLS
// ListenAndServeTLS starts a server that listens on the provided TCP mode (as supported
// by net.Listen).
func ListenAndServeTLS(srv *http.Server, network string, certFile, keyFile string) error {
addr := srv.Addr
if addr == "" {
addr = ":https"
}
config := &tls.Config{}
if srv.TLSConfig != nil {
*config = *srv.TLSConfig
}
if config.NextProtos == nil {
config.NextProtos = []string{"http/1.1"}
}
var err error
config.Certificates = make([]tls.Certificate, 1)
config.Certificates[0], err = tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
return err
}
ln, err := net.Listen(network, addr)
if err != nil {
return err
}
tlsListener := tls.NewListener(tcpKeepAliveListener{ln.(*net.TCPListener)}, config)
return srv.Serve(tlsListener)
}
示例7: Get
func (s *StreamHandlerSuite) Get(c *C) *http.Response {
f, err := os.Open(s.FileName)
c.Assert(err, IsNil)
_, err = f.Seek(0, os.SEEK_END)
c.Assert(err, IsNil)
s.Handler = &StreamHandler{
File: f,
FlushInterval: 1 * time.Millisecond,
IdleTimeout: 20 * time.Millisecond,
}
l, err := net.Listen("tcp", "localhost:")
c.Assert(err, IsNil)
x := http.Server{Handler: s.Handler}
go x.Serve(l)
defer l.Close()
res, err := http.Get(fmt.Sprintf("http://%s/", l.Addr()))
c.Assert(err, IsNil)
return res
}
示例8: main
func main() {
flag.Parse()
http.HandleFunc("/", accessHandler)
http.HandleFunc("/_revoke/", revokeHandler)
listener, err := net.Listen("tcp", *listenAddress)
if err != nil {
log.Fatal(err)
}
if *tlsCertPath != "" && *tlsKeyPath != "" {
tlsConfig := &tls.Config{
NextProtos: []string{"http/1.1"},
Certificates: make([]tls.Certificate, 1),
}
tlsConfig.Certificates[0], err = tls.LoadX509KeyPair(*tlsCertPath, *tlsKeyPath)
if err != nil {
log.Fatal(err)
}
listener = tls.NewListener(listener, tlsConfig)
}
srv := http.Server{Addr: *listenAddress}
log.Fatal(srv.Serve(listener))
}
示例9: serveHTTPS
func serveHTTPS(ctx context.Context, httpServer *http.Server) error {
log.Printf("Starting TLS server on %s", *httpsAddr)
httpsServer := new(http.Server)
*httpsServer = *httpServer
httpsServer.Addr = *httpsAddr
if !inProd {
if *tlsCertFile == "" {
return errors.New("unspecified --tlscert flag")
}
if *tlsKeyFile == "" {
return errors.New("unspecified --tlskey flag")
}
return httpsServer.ListenAndServeTLS(*tlsCertFile, *tlsKeyFile)
}
cert, err := tlsCertFromGCS(ctx)
if err != nil {
return fmt.Errorf("error loading TLS certs from GCS: %v", err)
}
httpsServer.TLSConfig = &tls.Config{
Certificates: []tls.Certificate{*cert},
}
log.Printf("Listening for HTTPS on %v", *httpsAddr)
ln, err := net.Listen("tcp", *httpsAddr)
if err != nil {
return err
}
return httpsServer.Serve(tls.NewListener(tcpKeepAliveListener{ln.(*net.TCPListener)}, httpsServer.TLSConfig))
}
示例10: listenAndServe
func (h *Handler) listenAndServe(proto, addr, group string) error {
var (
start = make(chan struct{})
l net.Listener
err error
spec string
)
server := http.Server{
Addr: addr,
Handler: h.mux,
}
switch proto {
case "tcp":
l, spec, err = newTCPListener(group, addr, start)
case "unix":
l, spec, err = newUnixListener(addr, group, start)
}
if spec != "" {
defer os.Remove(spec)
}
if err != nil {
return err
}
close(start)
return server.Serve(l)
}
示例11: main
func main() {
var socketPath string
if len(os.Args) < 2 {
socketPath = ""
} else {
socketPath = os.Args[1]
}
if socketPath == "" {
socketPath = filepath.Join(os.TempDir(), "apple-ssl.sock")
}
ln, err := net.Listen("unix", socketPath)
if err != nil {
log.Fatalln("error listening:", err)
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, `<h1>Your SSN and CC are safe here<h1><input type="text"><br><input type="submit">`)
})
server := http.Server{}
if err := server.Serve(ln); err != nil {
log.Fatalln("error serving", err)
}
}
示例12: serveHTTPS
func (r *Router) serveHTTPS(server *http.Server, errChan chan error) error {
if r.config.EnableSSL {
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{r.config.SSLCertificate},
CipherSuites: r.config.CipherSuites,
}
tlsListener, err := tls.Listen("tcp", fmt.Sprintf(":%d", r.config.SSLPort), tlsConfig)
if err != nil {
r.logger.Fatalf("tls.Listen: %s", err)
return err
}
r.tlsListener = tlsListener
r.logger.Infof("Listening on %s", tlsListener.Addr())
go func() {
err := server.Serve(tlsListener)
r.stopLock.Lock()
if !r.stopping {
errChan <- err
}
r.stopLock.Unlock()
close(r.tlsServeDone)
}()
}
return nil
}
示例13: TestGoRPCGoClient
// TestGoRPCGoClient tests the go client using goRPC
func TestGoRPCGoClient(t *testing.T) {
service := createService()
// listen on a random port
listener, err := net.Listen("tcp", ":0")
if err != nil {
t.Fatalf("Cannot listen: %v", err)
}
defer listener.Close()
// Create a Go Rpc server and listen on the port
server := rpcplus.NewServer()
server.Register(gorpcvtgateservice.New(service))
// create the HTTP server, serve the server from it
handler := http.NewServeMux()
bsonrpc.ServeCustomRPC(handler, server, false)
httpServer := http.Server{
Handler: handler,
}
go httpServer.Serve(listener)
// and run the test suite
testGoClient(t, "gorpc", listener.Addr().String())
}
示例14: serveHTTP
func (r *Router) serveHTTP(server *http.Server, errChan chan error) error {
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", r.config.Port))
if err != nil {
r.logger.Fatal("net.Listen: %s", err)
return err
}
r.listener = listener
if r.config.EnablePROXY {
r.listener = &proxyproto.Listener{listener}
}
r.logger.Info(fmt.Sprintf("Listening on %s", r.listener.Addr()))
go func() {
err := server.Serve(r.listener)
r.stopLock.Lock()
if !r.stopping {
errChan <- err
}
r.stopLock.Unlock()
close(r.serveDone)
}()
return nil
}
示例15: listenAndServe
func listenAndServe(urlStr string, out beam.Sender) error {
fmt.Println("Starting Docker server...")
r, err := createRouter(out)
if err != nil {
return err
}
parsedUrl, err := url.Parse(urlStr)
if err != nil {
return err
}
var hostAndPath string
// For Unix sockets we need to capture the path as well as the host
if parsedUrl.Scheme == "unix" {
hostAndPath = "/" + parsedUrl.Host + parsedUrl.Path
} else {
hostAndPath = parsedUrl.Host
}
l, err := net.Listen(parsedUrl.Scheme, hostAndPath)
if err != nil {
return err
}
httpSrv := http.Server{Addr: hostAndPath, Handler: r}
return httpSrv.Serve(l)
}