From 9d11dd437faf294a735f52f35e90779353f35293 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Sun, 4 Sep 2016 19:45:35 -0400 Subject: [PATCH] Send hello event containing server version on WebSocket connect (#3936) --- api/web_hub.go | 5 +++++ model/websocket_message.go | 1 + webapp/actions/websocket_actions.jsx | 9 +++++++++ webapp/utils/constants.jsx | 3 ++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/web_hub.go b/api/web_hub.go index 89f9891f8f..c4abc5a7a6 100644 --- a/api/web_hub.go +++ b/api/web_hub.go @@ -4,6 +4,7 @@ package api import ( + "fmt" l4g "github.com/alecthomas/log4go" "github.com/mattermost/platform/einterfaces" @@ -61,6 +62,10 @@ func InvalidateCacheForChannel(channelId string) { func (h *Hub) Register(webConn *WebConn) { h.register <- webConn + + msg := model.NewWebSocketEvent("", "", webConn.UserId, model.WEBSOCKET_EVENT_HELLO) + msg.Add("server_version", fmt.Sprintf("%v.%v", model.CurrentVersion, utils.CfgHash)) + go Publish(msg) } func (h *Hub) Unregister(webConn *WebConn) { diff --git a/model/websocket_message.go b/model/websocket_message.go index 0ad4559974..18e070afdc 100644 --- a/model/websocket_message.go +++ b/model/websocket_message.go @@ -24,6 +24,7 @@ const ( WEBSOCKET_EVENT_PREFERENCE_CHANGED = "preference_changed" WEBSOCKET_EVENT_EPHEMERAL_MESSAGE = "ephemeral_message" WEBSOCKET_EVENT_STATUS_CHANGE = "status_change" + WEBSOCKET_EVENT_HELLO = "hello" ) type WebSocketMessage interface { diff --git a/webapp/actions/websocket_actions.jsx b/webapp/actions/websocket_actions.jsx index 28faf47335..68853c2298 100644 --- a/webapp/actions/websocket_actions.jsx +++ b/webapp/actions/websocket_actions.jsx @@ -156,6 +156,10 @@ function handleEvent(msg) { handleStatusChangedEvent(msg); break; + case SocketEvents.HELLO: + handleHelloEvent(msg); + break; + default: } } @@ -284,3 +288,8 @@ function handleUserTypingEvent(msg) { function handleStatusChangedEvent(msg) { UserStore.setStatus(msg.user_id, msg.data.status); } + +function handleHelloEvent(msg) { + Client.serverVersion = msg.data.server_version; + AsyncClient.checkVersion(); +} diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx index 1ec20d3e8e..b4eb1d11a7 100644 --- a/webapp/utils/constants.jsx +++ b/webapp/utils/constants.jsx @@ -198,7 +198,8 @@ export const Constants = { TYPING: 'typing', PREFERENCE_CHANGED: 'preference_changed', EPHEMERAL_MESSAGE: 'ephemeral_message', - STATUS_CHANGED: 'status_change' + STATUS_CHANGED: 'status_change', + HELLO: 'hello' }, UserUpdateEvents: {