forked from pothtonswer/discordmuffin
Merge branch 'develop-udp-keepalive' into develop
This commit is contained in:
commit
ae1d755d14
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
|
// TODO monitor a chan/bool to verify this was successful
|
||||||
|
|
||||||
// Start the UDP connection
|
// 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
|
return
|
||||||
|
|
||||||
|
@ -332,3 +340,28 @@ func (v *Voice) udpOpen() (err error) {
|
||||||
v.Ready = true
|
v.Ready = true
|
||||||
return
|
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