Files
webrtc/examples/data-channels/main.go
Sean DuBois 25544948a0 Messages are delievered to public API
MVP complete! Only implemented ondatachannel and onmessage but users can
now recieve datachannel messages
2018-07-21 12:27:38 -07:00

59 lines
1.5 KiB
Go

package main
import (
"bufio"
"encoding/base64"
"fmt"
"os"
"github.com/pions/webrtc"
"github.com/pions/webrtc/pkg/ice"
)
func main() {
reader := bufio.NewReader(os.Stdin)
rawSd, err := reader.ReadString('\n')
if err != nil {
panic(err)
}
fmt.Println("")
sd, err := base64.StdEncoding.DecodeString(rawSd)
if err != nil {
panic(err)
}
/* Everything below is the pion-WebRTC API, thanks for using it! */
// Create a new RTCPeerConnection
peerConnection := &webrtc.RTCPeerConnection{}
// Set the handler for ICE connection state
// This will notify you when the peer has connected/disconnected
peerConnection.OnICEConnectionStateChange = func(connectionState ice.ConnectionState) {
fmt.Printf("Connection State has changed %s \n", connectionState.String())
}
peerConnection.Ondatachannel = func(d *webrtc.RTCDataChannel) {
fmt.Printf("New DataChannel %s %d\n", d.Label, d.ID)
d.Onmessage = func(message []byte) {
fmt.Printf("Message from DataChannel %s '%s'\n", d.Label, string(message))
}
}
// Set the remote SessionDescription
if err := peerConnection.SetRemoteDescription(string(sd)); err != nil {
panic(err)
}
// Sets the LocalDescription, and starts our UDP listeners
if err := peerConnection.CreateAnswer(); err != nil {
panic(err)
}
// Get the LocalDescription and take it to base64 so we can paste in browser
localDescriptionStr := peerConnection.LocalDescription.Marshal()
fmt.Println(base64.StdEncoding.EncodeToString([]byte(localDescriptionStr)))
select {}
}