mirror of
https://github.com/matrix-org/pinecone.git
synced 2026-01-11 19:46:30 +00:00
Allow specifying custom http.Client to connection manager for WebSocket connections
This commit is contained in:
parent
e80b089669
commit
f686361e6d
4 changed files with 18 additions and 8 deletions
|
|
@ -132,7 +132,7 @@ func (m *Pinecone) Start() {
|
|||
|
||||
m.PineconeRouter = pineconeRouter.NewRouter(m.logger, sk, false)
|
||||
m.PineconeMulticast = pineconeMulticast.NewMulticast(m.logger, m.PineconeRouter)
|
||||
m.PineconeManager = pineconeConnections.NewConnectionManager(m.PineconeRouter)
|
||||
m.PineconeManager = pineconeConnections.NewConnectionManager(m.PineconeRouter, nil)
|
||||
}
|
||||
|
||||
func (m *Pinecone) Stop() {
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ func main() {
|
|||
pineconeRouter := router.NewRouter(logger, sk, false)
|
||||
pineconeMulticast := multicast.NewMulticast(logger, pineconeRouter)
|
||||
pineconeMulticast.Start()
|
||||
pineconeManager := connections.NewConnectionManager(pineconeRouter)
|
||||
pineconeManager := connections.NewConnectionManager(pineconeRouter, nil)
|
||||
|
||||
listentcp := flag.String("listen", ":0", "address to listen for TCP connections")
|
||||
listenws := flag.String("listenws", ":0", "address to listen for WebSockets connections")
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ func main() {
|
|||
pineconeRouter := router.NewRouter(logger, sk, false)
|
||||
pineconeMulticast := multicast.NewMulticast(logger, pineconeRouter)
|
||||
pineconeMulticast.Start()
|
||||
pineconeManager := connections.NewConnectionManager(pineconeRouter)
|
||||
pineconeManager := connections.NewConnectionManager(pineconeRouter, nil)
|
||||
pineconeTUN, err := tun.NewTUN(pineconeRouter)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import (
|
|||
"fmt"
|
||||
"math"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
|
@ -35,6 +36,8 @@ type ConnectionManager struct {
|
|||
ctx context.Context
|
||||
cancel context.CancelFunc
|
||||
router *router.Router
|
||||
client *http.Client
|
||||
ws *websocket.DialOptions
|
||||
_staticPeers map[string]*connectionAttempts
|
||||
_connectedPeers map[string]struct{}
|
||||
}
|
||||
|
|
@ -44,15 +47,22 @@ type connectionAttempts struct {
|
|||
next time.Time
|
||||
}
|
||||
|
||||
func NewConnectionManager(r *router.Router) *ConnectionManager {
|
||||
func NewConnectionManager(r *router.Router, client *http.Client) *ConnectionManager {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
m := &ConnectionManager{
|
||||
ctx: ctx,
|
||||
cancel: cancel,
|
||||
router: r,
|
||||
ctx: ctx,
|
||||
cancel: cancel,
|
||||
router: r,
|
||||
client: client,
|
||||
ws: &websocket.DialOptions{
|
||||
HTTPClient: client,
|
||||
},
|
||||
_staticPeers: map[string]*connectionAttempts{},
|
||||
_connectedPeers: map[string]struct{}{},
|
||||
}
|
||||
if m.ws.HTTPClient == nil {
|
||||
m.ws.HTTPClient = http.DefaultClient
|
||||
}
|
||||
time.AfterFunc(interval, m._worker)
|
||||
return m
|
||||
}
|
||||
|
|
@ -82,7 +92,7 @@ func (m *ConnectionManager) _connect(uri string) {
|
|||
case strings.HasPrefix(uri, "ws://"):
|
||||
fallthrough
|
||||
case strings.HasPrefix(uri, "wss://"):
|
||||
c, _, err := websocket.Dial(ctx, uri, nil)
|
||||
c, _, err := websocket.Dial(ctx, uri, m.ws)
|
||||
if err != nil {
|
||||
result(err)
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue