package main import ( "context" "fmt" "net" "time" "github.com/pion/dtls/v2" "github.com/pion/dtls/v2/examples/util" ) func main() { // Prepare the IP to connect to addr := &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 4444} // // Everything below is the pion-DTLS API! Thanks for using it ❤️. // // Prepare the configuration of the DTLS connection config := &dtls.Config{ PSK: func(hint []byte) ([]byte, error) { fmt.Printf("Server's hint: %s \n", hint) return []byte{0xAB, 0xC1, 0x23}, nil }, PSKIdentityHint: []byte("Pion DTLS Server"), CipherSuites: []dtls.CipherSuiteID{dtls.TLS_PSK_WITH_AES_128_CCM_8}, ExtendedMasterSecret: dtls.RequireExtendedMasterSecret, } // Connect to a DTLS server ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() dtlsConn, err := dtls.DialWithContext(ctx, "udp", addr, config) util.Check(err) defer func() { util.Check(dtlsConn.Close()) }() fmt.Println("Connected; type 'exit' to shutdown gracefully") // Simulate a chat session util.Chat(dtlsConn) }