mirror of
https://github.com/balzack/databag.git
synced 2025-02-18 22:19:20 +00:00
integrating stun/turn for webrtc
This commit is contained in:
parent
eff87f2526
commit
449693d375
@ -51,6 +51,11 @@ func AddCall(w http.ResponseWriter, r *http.Request) {
|
|||||||
ErrResponse(w, http.StatusInternalServerError, calleeErr)
|
ErrResponse(w, http.StatusInternalServerError, calleeErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
//turnBin, turnErr := securerandom.Bytes(APPTokenSize)
|
||||||
|
//if turnErr != nil {
|
||||||
|
// ErrResponse(w, http.StatusInternalServerError, turnErr)
|
||||||
|
// return
|
||||||
|
//}
|
||||||
callId := uuid.New().String()
|
callId := uuid.New().String()
|
||||||
|
|
||||||
// allocate bridge
|
// allocate bridge
|
||||||
|
75
net/server/internal/sturn/sturn.go
Normal file
75
net/server/internal/sturn/sturn.go
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
package databag
|
||||||
|
|
||||||
|
import (
|
||||||
|
// "encoding/json"
|
||||||
|
"sync"
|
||||||
|
// "time"
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
var sturn *Sturn
|
||||||
|
const SturnKeepAlive = 15
|
||||||
|
|
||||||
|
type SturnSession struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sturn struct {
|
||||||
|
sync sync.Mutex
|
||||||
|
sessions []*SturnSession
|
||||||
|
port uint
|
||||||
|
relayStart uint
|
||||||
|
relayEnd uint
|
||||||
|
conn *net.PacketConn
|
||||||
|
closed chan bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func Listen(port uint, relayStart uint, relayEnd uint) (error) {
|
||||||
|
|
||||||
|
if (sturn != nil) {
|
||||||
|
(*sturn.conn).Close()
|
||||||
|
<-sturn.closed
|
||||||
|
sturn = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
address := fmt.Sprintf(":%d", port)
|
||||||
|
conn, err := net.ListenPacket("udp", address)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("STARTED STURN SERVER")
|
||||||
|
|
||||||
|
sturn := &Sturn{
|
||||||
|
port: port,
|
||||||
|
relayStart: relayStart,
|
||||||
|
relayEnd: relayEnd,
|
||||||
|
conn: &conn,
|
||||||
|
}
|
||||||
|
|
||||||
|
go sturn.serve(conn);
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Close() {
|
||||||
|
if (sturn != nil) {
|
||||||
|
(*sturn.conn).Close()
|
||||||
|
<-sturn.closed
|
||||||
|
sturn = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Sturn) serve(conn net.PacketConn) {
|
||||||
|
for {
|
||||||
|
buf := make([]byte, 1024)
|
||||||
|
n, addr, err := conn.ReadFrom(buf)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("GOT STURN MESSAGE: ", n, addr);
|
||||||
|
}
|
||||||
|
s.closed <- true
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
app "databag/internal"
|
app "databag/internal"
|
||||||
"databag/internal/store"
|
"databag/internal/store"
|
||||||
|
sturn "databag/internal/sturn"
|
||||||
"github.com/gorilla/handlers"
|
"github.com/gorilla/handlers"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -18,6 +19,8 @@ func main() {
|
|||||||
origins := handlers.AllowedOrigins([]string{"*"})
|
origins := handlers.AllowedOrigins([]string{"*"})
|
||||||
methods := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS"})
|
methods := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS"})
|
||||||
|
|
||||||
|
sturn.Listen(5001, 5002, 5101)
|
||||||
|
|
||||||
args := os.Args
|
args := os.Args
|
||||||
if len(args) == 3 {
|
if len(args) == 3 {
|
||||||
port := ":" + args[2]
|
port := ":" + args[2]
|
||||||
@ -32,4 +35,6 @@ func main() {
|
|||||||
log.Printf("starting server");
|
log.Printf("starting server");
|
||||||
log.Fatal(http.ListenAndServe(":7000", handlers.CORS(origins, methods)(router)))
|
log.Fatal(http.ListenAndServe(":7000", handlers.CORS(origins, methods)(router)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sturn.Close();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user