func DefaultWANConfig() *Config {
	conf := DefaultLANConfig()
	conf.TCPTimeout = 30 * time.Second
	conf.SuspicionMult = 6
	conf.PushPullInterval = 60 * time.Second
	conf.ProbeTimeout = 3 * time.Second
	conf.ProbeInterval = 5 * time.Second
	conf.GossipNodes = 4  
	conf.GossipInterval = 500 * time.Millisecond
	return conf
}
DefaultWANConfig works like DefaultConfig, however it returns a configuration
that is optimized for most WAN environments. The default configuration is
still very conservative and errs on the side of caution.
package memberlist
import (
	"io"
	"os"
	"time"
)
type Config struct {
	Name string
	BindAddr string
	BindPort int
	AdvertiseAddr string
	AdvertisePort int
	ProtocolVersion uint8
	TCPTimeout time.Duration
	IndirectChecks int
	RetransmitMult int
	SuspicionMult int
	PushPullInterval time.Duration
	ProbeInterval time.Duration
	ProbeTimeout  time.Duration
	GossipInterval time.Duration
	GossipNodes    int
	EnableCompression bool
	SecretKey []byte
	Keyring *Keyring
	Delegate                Delegate
	DelegateProtocolVersion uint8
	DelegateProtocolMin     uint8
	DelegateProtocolMax     uint8
	Events                  EventDelegate
	Conflict                ConflictDelegate
	Merge                   MergeDelegate
	LogOutput io.Writer
}
func DefaultLANConfig() *Config {
	hostname, _ := os.Hostname()
	return &Config{
		Name:             hostname,
		BindAddr:         "0.0.0.0",
		BindPort:         7946,
		AdvertiseAddr:    "",
		AdvertisePort:    7946,
		ProtocolVersion:  ProtocolVersionMax,
		TCPTimeout:       10 * time.Second,        
		IndirectChecks:   3,                       
		RetransmitMult:   4,                       
		SuspicionMult:    5,                       
		PushPullInterval: 30 * time.Second,        
		ProbeTimeout:     500 * time.Millisecond,  
		ProbeInterval:    1 * time.Second,         
		GossipNodes:    3,                       
		GossipInterval: 200 * time.Millisecond,  
		EnableCompression: true,  
		SecretKey: nil,
		Keyring: nil,
	}
}