summaryrefslogtreecommitdiffstats
path: root/model/websocket_client.go
diff options
context:
space:
mode:
authorGuy B <33279417+guydemi@users.noreply.github.com>2018-04-12 22:54:03 +0300
committerJoram Wilander <jwawilander@gmail.com>2018-04-12 15:54:03 -0400
commit911b409936521827152b0a491d3e02ed81202694 (patch)
treeb84a66f9324590c67f1d39035e89f1db8f3a4367 /model/websocket_client.go
parent7826774a14ebf9a3bab11069a8f2ff8947fe931a (diff)
downloadchat-911b409936521827152b0a491d3e02ed81202694.tar.gz
chat-911b409936521827152b0a491d3e02ed81202694.tar.bz2
chat-911b409936521827152b0a491d3e02ed81202694.zip
Websocket custom dialer support (#8592)
* added support for custom websocket dialers (to be able to skip system proxy for example) * removed newline * typoe, arguments order
Diffstat (limited to 'model/websocket_client.go')
-rw-r--r--model/websocket_client.go22
1 files changed, 19 insertions, 3 deletions
diff --git a/model/websocket_client.go b/model/websocket_client.go
index cdec75aba..4ff4f617b 100644
--- a/model/websocket_client.go
+++ b/model/websocket_client.go
@@ -29,7 +29,13 @@ type WebSocketClient struct {
// NewWebSocketClient constructs a new WebSocket client with convenience
// methods for talking to the server.
func NewWebSocketClient(url, authToken string) (*WebSocketClient, *AppError) {
- conn, _, err := websocket.DefaultDialer.Dial(url+API_URL_SUFFIX_V3+"/users/websocket", nil)
+ return NewWebSocketClientWithDialer(websocket.DefaultDialer, url, authToken)
+}
+
+// NewWebSocketClientWithDialer constructs a new WebSocket client with convenience
+// methods for talking to the server using a custom dialer.
+func NewWebSocketClientWithDialer(dialer *websocket.Dialer, url, authToken string) (*WebSocketClient, *AppError) {
+ conn, _, err := dialer.Dial(url+API_URL_SUFFIX_V3+"/users/websocket", nil)
if err != nil {
return nil, NewAppError("NewWebSocketClient", "model.websocket_client.connect_fail.app_error", nil, err.Error(), http.StatusInternalServerError)
}
@@ -54,7 +60,13 @@ func NewWebSocketClient(url, authToken string) (*WebSocketClient, *AppError) {
// NewWebSocketClient4 constructs a new WebSocket client with convenience
// methods for talking to the server. Uses the v4 endpoint.
func NewWebSocketClient4(url, authToken string) (*WebSocketClient, *AppError) {
- conn, _, err := websocket.DefaultDialer.Dial(url+API_URL_SUFFIX+"/websocket", nil)
+ return NewWebSocketClient4WithDialer(websocket.DefaultDialer, url, authToken)
+}
+
+// NewWebSocketClient4WithDialer constructs a new WebSocket client with convenience
+// methods for talking to the server using a custom dialer. Uses the v4 endpoint.
+func NewWebSocketClient4WithDialer(dialer *websocket.Dialer, url, authToken string) (*WebSocketClient, *AppError) {
+ conn, _, err := dialer.Dial(url+API_URL_SUFFIX+"/websocket", nil)
if err != nil {
return nil, NewAppError("NewWebSocketClient4", "model.websocket_client.connect_fail.app_error", nil, err.Error(), http.StatusInternalServerError)
}
@@ -77,8 +89,12 @@ func NewWebSocketClient4(url, authToken string) (*WebSocketClient, *AppError) {
}
func (wsc *WebSocketClient) Connect() *AppError {
+ return wsc.ConnectWithDialer(websocket.DefaultDialer)
+}
+
+func (wsc *WebSocketClient) ConnectWithDialer(dialer *websocket.Dialer) *AppError {
var err error
- wsc.Conn, _, err = websocket.DefaultDialer.Dial(wsc.ConnectUrl, nil)
+ wsc.Conn, _, err = dialer.Dial(wsc.ConnectUrl, nil)
if err != nil {
return NewAppError("Connect", "model.websocket_client.connect_fail.app_error", nil, err.Error(), http.StatusInternalServerError)
}