code: func (c *SocketConnection) SendMsg(msg map[string]string, uuid, data string) (m *Message, err error) {
  
  	b := bytes.NewBufferString("sendmsg")
  
  	if uuid != "" {
  		if strings.Contains(uuid, "\r\n") {
  			return nil, fmt.Errorf(EInvalidCommandProvided, msg)
  		}
  
  		b.WriteString(" " + uuid)
  	}
  
  	b.WriteString("\n")
  
  	for k, v := range msg {
  		if strings.Contains(k, "\r\n") {
  			return nil, fmt.Errorf(EInvalidCommandProvided, msg)
  		}
  
  		if v != "" {
  			if strings.Contains(v, "\r\n") {
  				return nil, fmt.Errorf(EInvalidCommandProvided, msg)
  			}
  
  			b.WriteString(fmt.Sprintf("%s: %s\n", k, v))
  		}
  	}
  
  	b.WriteString("\n")
  
  	if msg["content-length"] != "" && data != "" {
  		b.WriteString(data)
  	}
  
  	// lock mutex
  	c.mtx.Lock()
  	_, err = b.WriteTo(c)
  	if err != nil {
  		c.mtx.Unlock()
  		return nil, err
  	}
  	c.mtx.Unlock()
  
  	select {
  	case err := <-c.err:
  		return nil, err
  	case m := <-c.m:
  		return m, nil
  	}
  }
docs: // SendMsg - Basically this func will send message to the opened connection