1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
- // See LICENSE.txt for license information.
- package api4
- import (
- "net/http"
- "github.com/gorilla/websocket"
- "github.com/mattermost/mattermost-server/v5/mlog"
- "github.com/mattermost/mattermost-server/v5/model"
- )
- func (api *API) InitWebSocket() {
- // Optionally supports a trailing slash
- api.BaseRoutes.ApiRoot.Handle("/{websocket:websocket(?:\\/)?}", api.ApiHandlerTrustRequester(connectWebSocket)).Methods("GET")
- }
- func connectWebSocket(c *Context, w http.ResponseWriter, r *http.Request) {
- upgrader := websocket.Upgrader{
- ReadBufferSize: model.SOCKET_MAX_MESSAGE_SIZE_KB,
- WriteBufferSize: model.SOCKET_MAX_MESSAGE_SIZE_KB,
- CheckOrigin: c.App.OriginChecker(),
- }
- ws, err := upgrader.Upgrade(w, r, nil)
- if err != nil {
- mlog.Error("websocket connect err.", mlog.Err(err))
- c.Err = model.NewAppError("connect", "api.web_socket.connect.upgrade.app_error", nil, "", http.StatusInternalServerError)
- return
- }
- wc := c.App.NewWebConn(ws, *c.App.Session(), c.App.T, "")
- if len(c.App.Session().UserId) > 0 {
- c.App.HubRegister(wc)
- }
- wc.Pump()
- }
|