func ListenTLS(how, addr string, certFile, keyFile string) (*Server, error) {
	cert, err := tls.LoadX509KeyPair(certFile, keyFile)
	if err != nil {
		return nil, err
	}
	return ListenTLSCustom(how, addr, &tls.Config{
		RootCAs:      TLSCertPool(),
		Certificates: []tls.Certificate{cert},
	})
}
Start a `how` server listening for connections at `addr` with TLS certificates.
You need to call Accept() on the returned socket to start accepting connections.
`how` and `addr` are passed to `net.Listen()` and thus any values accepted by
net.Listen are valid.
The returned server has Handlers=DefaultHandlers and Limits=DefaultLimits set,
which you can change if you want.
package gotalk
import (
	"crypto/tls"
	"net"
	"os"
	"os/signal"
	"syscall"
	"time"
)
type SockHandler func(*Sock)
type Server struct {
	*Handlers
	*Limits
	AcceptHandler SockHandler
	HeartbeatInterval time.Duration
	OnHeartbeat func(load int, t time.Time)
	Listener net.Listener
}
func NewServer(h *Handlers, limits *Limits, l net.Listener) *Server {
	return &Server{Handlers: h, Limits: limits, Listener: l}
}
func Listen(how, addr string) (*Server, error) {
	l, err := net.Listen(how, addr)
	if err != nil {
		return nil, err
	}
	l = wrapListener(l)
	s := NewServer(DefaultHandlers, DefaultLimits, l)
	return s, nil
}