Use transport factory function
This commit is contained in:
parent
8db608ccc1
commit
06a76160c8
|
@ -143,7 +143,7 @@ func NewClient(config Config, r *Router) (c *Client, err error) {
|
|||
c.config.ConnectTimeout = 15 // 15 second as default
|
||||
}
|
||||
|
||||
c.transport = &XMPPTransport{Config: config.TransportConfiguration}
|
||||
c.transport = NewTransport(config.TransportConfiguration)
|
||||
|
||||
return
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ func (c *Component) Connect() error {
|
|||
}
|
||||
func (c *Component) Resume(sm SMState) error {
|
||||
var err error
|
||||
c.transport = &XMPPTransport{Config: c.ComponentOptions.TransportConfiguration}
|
||||
c.transport = NewTransport(c.ComponentOptions.TransportConfiguration)
|
||||
if err = c.transport.Connect(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
12
transport.go
12
transport.go
|
@ -3,6 +3,7 @@ package xmpp
|
|||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var TLSNotSupported = errors.New("Transport does not support StartTLS")
|
||||
|
@ -29,7 +30,14 @@ type Transport interface {
|
|||
Close() error
|
||||
}
|
||||
|
||||
// NewTransport creates a new Transport instance.
|
||||
// The type of transport is determined by the address in the configuration:
|
||||
// - if the address is a URL with the `ws` or `wss` scheme WebsocketTransport is used
|
||||
// - in all other cases a XMPPTransport is used
|
||||
// For XMPPTransport it is mandatory for the address to have a port specified.
|
||||
func NewTransport(config TransportConfiguration) Transport {
|
||||
return &XMPPTransport{Config: config}
|
||||
|
||||
if strings.HasPrefix(config.Address, "ws:") || strings.HasPrefix(config.Address, "wss:") {
|
||||
return &WebsocketTransport{Config: config}
|
||||
}
|
||||
return &XMPPTransport{Config: config}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue