code: func NewClientWithServerInfo(user, pass, resource, authType, host, domain, conf string) (*Client, error) {
  	connection, err := xmpp.Dial(host)
  
  	var b bytes.Buffer
  	if err := xml.EscapeText(&b, []byte(pass)); err != nil {
  		return nil, err
  	}
  
  	c := &Client{
  		AuthType: authType,
  		Username: user,
  		Password: b.String(),
  		Resource: resource,
  		Id:       user + "@" + domain,
  
  		// private
  		connection:      connection,
  		mentionNames:    make(map[string]string),
  		receivedUsers:   make(chan []*User),
  		receivedRooms:   make(chan []*Room),
  		receivedMessage: make(chan *Message),
  		host:            host,
  		domain:          domain,
  		conf:            conf,
  	}
  
  	if err != nil {
  		return c, err
  	}
  
  	err = c.authenticate()
  	if err != nil {
  		return c, err
  	}
  
  	go c.listen()
  	return c, nil
  }
docs: // NewClientWithServerInfo creates a new Client connection from the user name, password,
  // resource, host URL and conf URL passed to it.