mirror of
https://gitlab.com/comunic/ComunicRTCProxy
synced 2024-11-17 02:51:12 +00:00
Connect to websocket
This commit is contained in:
parent
4990ecea0f
commit
c30af1b6d7
19
config.go
19
config.go
@ -1,8 +1,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/url"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
@ -16,6 +18,23 @@ type Config struct {
|
||||
Token string
|
||||
}
|
||||
|
||||
// Get the URL associated with the configuration
|
||||
func (c *Config) getURL() url.URL {
|
||||
|
||||
// Adapt scheme
|
||||
scheme := "ws"
|
||||
if c.Secure {
|
||||
scheme = "wss"
|
||||
}
|
||||
|
||||
return url.URL{
|
||||
Scheme: scheme,
|
||||
Host: fmt.Sprintf("%s:%d", c.Hostname, c.Port),
|
||||
Path: c.Path,
|
||||
RawQuery: "token=" + c.Token,
|
||||
}
|
||||
}
|
||||
|
||||
// Load the configuration
|
||||
func loadConfig(path string) Config {
|
||||
|
||||
|
5
go.mod
5
go.mod
@ -2,4 +2,7 @@ module comunic_rtc_proxy
|
||||
|
||||
go 1.14
|
||||
|
||||
require gopkg.in/yaml.v2 v2.2.8
|
||||
require (
|
||||
github.com/gorilla/websocket v0.0.0-20200319175051-b65e62901fc1
|
||||
gopkg.in/yaml.v2 v2.2.8
|
||||
)
|
||||
|
2
go.sum
2
go.sum
@ -1,3 +1,5 @@
|
||||
github.com/gorilla/websocket v0.0.0-20200319175051-b65e62901fc1 h1:7ayOP29ju4m5AwzfTVSg/Kv3taEmAk45liBqZSGNfGY=
|
||||
github.com/gorilla/websocket v0.0.0-20200319175051-b65e62901fc1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
|
4
main.go
4
main.go
@ -17,6 +17,6 @@ func main() {
|
||||
// First, load the config
|
||||
conf := loadConfig(os.Args[1])
|
||||
|
||||
fmt.Println(conf)
|
||||
|
||||
// Then connect to websocket
|
||||
openWs(&conf)
|
||||
}
|
||||
|
41
ws.go
Normal file
41
ws.go
Normal file
@ -0,0 +1,41 @@
|
||||
// Websocket controller
|
||||
//
|
||||
// @author Pierre HUBERT
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
// Open websocket connection
|
||||
func openWs(conf *Config) {
|
||||
|
||||
u := conf.getURL()
|
||||
log.Printf("Connecting to %s", u.String())
|
||||
|
||||
// Connect to Websocket
|
||||
c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
|
||||
if err != nil {
|
||||
log.Fatal("dial:", err)
|
||||
}
|
||||
defer c.Close()
|
||||
|
||||
// Read remote messages
|
||||
for {
|
||||
|
||||
_, message, err := c.ReadMessage()
|
||||
|
||||
if err != nil {
|
||||
log.Printf("WS Read error: %s", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// TODO : process incoming messages
|
||||
log.Printf("recv: %s", message)
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user