Dispatch Bite and Store to NATs. Fixes #4
parent
b25e31ff55
commit
de78442f6a
|
@ -0,0 +1,3 @@
|
|||
[submodule "backend-protobuf"]
|
||||
path = backend-protobuf
|
||||
url = git@makerforce.io:beep/backend-protobuf.git
|
|
@ -0,0 +1 @@
|
|||
Subproject commit a36ddf9a8106e69a2ad1c4a42fc78ed8765fd23e
|
4
go.mod
4
go.mod
|
@ -3,8 +3,12 @@ module webrtc
|
|||
go 1.12
|
||||
|
||||
require (
|
||||
github.com/golang/protobuf v1.3.1
|
||||
github.com/gorilla/websocket v1.4.0
|
||||
github.com/joho/godotenv v1.3.0
|
||||
github.com/julienschmidt/httprouter v1.2.0
|
||||
github.com/nats-io/go-nats v1.7.2
|
||||
github.com/nats-io/nkeys v0.0.2 // indirect
|
||||
github.com/nats-io/nuid v1.0.1 // indirect
|
||||
github.com/pion/webrtc/v2 v2.0.23
|
||||
)
|
||||
|
|
10
go.sum
10
go.sum
|
@ -3,7 +3,10 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
|||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
|
||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gortc/turn v0.7.1/go.mod h1:3FZ+LvCZKCKu6YYgwuYPqEi3FqCtdjfSFnFqVQNwfjk=
|
||||
|
@ -16,6 +19,12 @@ github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+
|
|||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/lucas-clemente/quic-go v0.7.1-0.20190401152353-907071221cf9/go.mod h1:PpMmPfPKO9nKJ/psF49ESTAGQSdfXxlg1otPbEB2nOw=
|
||||
github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk=
|
||||
github.com/nats-io/go-nats v1.7.2 h1:cJujlwCYR8iMz5ofZSD/p2WLW8FabhkQ2lIEVbSvNSA=
|
||||
github.com/nats-io/go-nats v1.7.2/go.mod h1:+t7RHT5ApZebkrQdnn6AhQJmhJJiKAvJUio1PiiCtj0=
|
||||
github.com/nats-io/nkeys v0.0.2 h1:+qM7QpgXnvDDixitZtQUBDY9w/s9mu1ghS+JIbsrx6M=
|
||||
github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4=
|
||||
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
|
||||
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
|
@ -58,6 +67,7 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
|
|||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5 h1:bselrhR0Or1vomJZC8ZIjWtbDmn9OYFLX5Ik9alpJpE=
|
||||
|
|
43
main.go
43
main.go
|
@ -9,17 +9,24 @@ import (
|
|||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
. "webrtc/backend-protobuf/go"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/julienschmidt/httprouter"
|
||||
"github.com/pion/webrtc/v2"
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"github.com/nats-io/go-nats"
|
||||
)
|
||||
|
||||
// Peer config
|
||||
var peerConnectionConfig webrtc.Configuration
|
||||
|
||||
var listen string
|
||||
var natsHost string
|
||||
|
||||
var upgrader websocket.Upgrader
|
||||
var mediaEngine webrtc.MediaEngine
|
||||
var webrtcApi *webrtc.API
|
||||
|
@ -28,6 +35,8 @@ var userTracks map[string] map[string] *webrtc.Track // userid + clientid
|
|||
var conversationUsers map[string] []string
|
||||
var userConversation map[string] string
|
||||
|
||||
var natsConn *nats.Conn
|
||||
|
||||
func main() {
|
||||
// Load .env
|
||||
err := godotenv.Load()
|
||||
|
@ -35,6 +44,7 @@ func main() {
|
|||
log.Fatal("Error loading .env file")
|
||||
}
|
||||
listen = os.Getenv("LISTEN")
|
||||
natsHost = os.Getenv("NATS")
|
||||
|
||||
upgrader = websocket.Upgrader{}
|
||||
|
||||
|
@ -63,6 +73,14 @@ func main() {
|
|||
conversationUsers = make(map[string] []string)
|
||||
userConversation = make(map[string] string)
|
||||
|
||||
// NATs client
|
||||
natsConn, err := nats.Connect(natsHost)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer natsConn.Close()
|
||||
|
||||
// Routes
|
||||
router := httprouter.New()
|
||||
router.GET("/connect", GetAuth(NewConnection))
|
||||
|
@ -157,6 +175,31 @@ func NewConnection(w http.ResponseWriter, r *http.Request, p httprouter.Params)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
start := time.Now().Unix()
|
||||
bite := Bite {
|
||||
Start: uint64(start),
|
||||
Key: conversationId,
|
||||
Data: rtpBuf[:i],
|
||||
}
|
||||
biteOut, err := proto.Marshal(&bite)
|
||||
if err != nil {
|
||||
log.Printf("%s", err)
|
||||
} else {
|
||||
natsConn.Publish("bite", biteOut)
|
||||
}
|
||||
|
||||
store := Store {
|
||||
Type: "bite",
|
||||
Bite: &bite,
|
||||
}
|
||||
|
||||
storeOut, err := proto.Marshal(&store)
|
||||
if err != nil {
|
||||
log.Printf("%s", err)
|
||||
} else {
|
||||
natsConn.Publish("store", storeOut)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue