68 lines
1.5 KiB
Go
68 lines
1.5 KiB
Go
package sender
|
|
|
|
import (
|
|
"github.com/pion/webrtc/v2"
|
|
)
|
|
|
|
const (
|
|
bufferThreshold = 512 * 1024 // 512kB
|
|
)
|
|
|
|
// // Initialize creates the connection, the datachannel and creates the offer
|
|
// func (s *Session) Initialize() error {
|
|
// if s.initialized {
|
|
// return nil
|
|
// }
|
|
|
|
// if err := s.sess.CreateConnection(s.onConnectionStateChange()); err != nil {
|
|
// log.Errorln(err)
|
|
// return err
|
|
// }
|
|
// if err := s.createDataChannel(); err != nil {
|
|
// log.Errorln(err)
|
|
// return err
|
|
// }
|
|
// if err := s.sess.CreateOffer(); err != nil {
|
|
// log.Errorln(err)
|
|
// return err
|
|
// }
|
|
|
|
// s.initialized = true
|
|
// return nil
|
|
// }
|
|
|
|
// // Start the connection and the file transfer
|
|
// func (s *Session) Start() error {
|
|
// if err := s.Initialize(); err != nil {
|
|
// return err
|
|
// }
|
|
// go s.readFile()
|
|
// if err := s.sess.ReadSDP(); err != nil {
|
|
// log.Errorln(err)
|
|
// return err
|
|
// }
|
|
// <-s.sess.Done
|
|
// s.sess.OnCompletion()
|
|
// return nil
|
|
// }
|
|
|
|
func (s *Session) CreateDataChannel() error {
|
|
ordered := true
|
|
maxPacketLifeTime := uint16(10000)
|
|
dataChannel, err := s.sess.CreateDataChannel(&webrtc.DataChannelInit{
|
|
Ordered: &ordered,
|
|
MaxPacketLifeTime: &maxPacketLifeTime,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
s.dataChannel = dataChannel
|
|
s.dataChannel.OnBufferedAmountLow(s.onBufferedAmountLow())
|
|
s.dataChannel.SetBufferedAmountLowThreshold(bufferThreshold)
|
|
s.dataChannel.OnOpen(s.onOpenHandler())
|
|
s.dataChannel.OnClose(s.onCloseHandler())
|
|
|
|
return nil
|
|
}
|