Initial add of working udpKeepAlive function
This commit is contained in:
parent
591162a2ff
commit
7f15cb77c3
1 changed files with 34 additions and 1 deletions
35
voice.go
35
voice.go
|
@ -168,7 +168,15 @@ func (v *Voice) wsEvent(messageType int, message []byte) {
|
|||
// TODO monitor a chan/bool to verify this was successful
|
||||
|
||||
// Start the UDP connection
|
||||
v.udpOpen()
|
||||
err := v.udpOpen()
|
||||
if err != nil {
|
||||
fmt.Println("Error opening udp connection: ", err)
|
||||
return
|
||||
}
|
||||
|
||||
// start udpKeepAlive
|
||||
go v.udpKeepAlive(5 * time.Second)
|
||||
// TODO: find a way to check that it fired off okay
|
||||
|
||||
return
|
||||
|
||||
|
@ -332,3 +340,28 @@ func (v *Voice) udpOpen() (err error) {
|
|||
v.Ready = true
|
||||
return
|
||||
}
|
||||
|
||||
// udpKeepAlive sends a udp packet to keep the udp connection open
|
||||
// This is still a bit of a "proof of concept"
|
||||
func (v *Voice) udpKeepAlive(i time.Duration) {
|
||||
|
||||
var err error
|
||||
var sequence uint64 = 0
|
||||
|
||||
packet := make([]byte, 8)
|
||||
|
||||
ticker := time.NewTicker(i)
|
||||
for {
|
||||
// TODO: Add a way to break from loop
|
||||
|
||||
binary.LittleEndian.PutUint64(packet, sequence)
|
||||
sequence++
|
||||
|
||||
_, err = v.UDPConn.Write(packet)
|
||||
if err != nil {
|
||||
fmt.Println("udpKeepAlive udp write error : ", err)
|
||||
return
|
||||
}
|
||||
<-ticker.C
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue