code: func (s *Server) UseTLS(cert, privKey, clientCACert []byte) error {
  	tlsCert, err := tls.X509KeyPair(cert, privKey)
  	if err != nil {
  		return fmt.Errorf("failed to parse the server certificate or the private key: %v", err)
  	}
  
  	c, _ := pem.Decode(cert)
  	if tlsCert.Leaf, err = x509.ParseCertificate(c.Bytes); err != nil {
  		return fmt.Errorf("failed to parse the server certificate: %v", err)
  	}
  
  	pool := x509.NewCertPool()
  	ok := pool.AppendCertsFromPEM(clientCACert)
  	if !ok {
  		return fmt.Errorf("failed to parse the CA certificate: %v", err)
  	}
  
  	s.wsConfig.TlsConfig = &tls.Config{
  		Certificates: []tls.Certificate{tlsCert},
  		ClientCAs:    pool,
  		ClientAuth:   tls.VerifyClientCertIfGiven,
  	}
  
  	return nil
  }
docs: // UseTLS enables Transport Layer Security for the connections.
  // cert, key = Server certificate/private key pair.
  // clientCACert = Optional certificate for verifying client certificates.
  // All certificates/private keys are in PEM encoded X.509 format.