Перейти к основному содержимому

Веб-сокет

В дополнение к HTTP RESTful веб-сервису, Time также предлагает систему доставки веб-сокет событий и некоторую функциональность API.

Чтобы подключиться по веб-сокету, выполните стандартное открытие рукопожатия, как определено спецификацией RFC к конечной точке /api/v4/websocket Time.

Аутентификация

Веб-сокет Time может быть аутентифицирован с использованием стандартных методов аутентификации API (с помощью cookie или с явным заголовком Authorization) или через вызов аутентификации. Если вы аутентифицируетесь из браузера и вошли в систему с помощью API Time, ваш cookie аутентификации уже должен быть установлен. Именно так веб-приложение Time аутентифицируется с веб-сокетами.

Чтобы аутентифицироваться с вызовом аутентификации, сначала подключите веб-сокеты, а затем отправьте следующий JSON через соединение:

{
"seq": 1,
"action": "authentication_challenge",
"data": {
"token": "time-token-goes-here"
}
}

Если успешно, вы получите стандартный ответ OK через веб-сокет соединение:

{
"status": "OK",
"seq_reply": 1
}

После успешной аутентификации сервер передаст веб-сокет событие hello, содержащее версию сервера через соединение.

События

Веб-сокет события в основном используются для уведомления клиента о изменениях в Time, таких как доставка новых сообщений или уведомление клиента о том, что другой пользователь печатает в канале.

Веб-сокеты события будут иметь форму:

{
"event": "hello",
"data": {
"server_version": "3.6.0.1451.1c38da627ebb4e3635677db6939e9195"
},
"broadcast":{
"omit_users": null,
"user_id": "ay5sq51sebfh58ktrce5ijtcwy",
"channel_id": "",
"team_id": ""
},
"seq": 0
}

Поле event указывает тип события, data содержит любые данные, относящиеся к событию, а broadcast содержит информацию о том, кому было отправлено событие. Например, в приведенном выше примере user_id установлен на "ay5sq51sebfh58ktrce5ijtcwy", что означает, что только пользователь с этим идентификатором получил это событие. Поле omit_users может содержать массив идентификаторов пользователей, которые были специально исключены из получения события.

Список веб-сокет событий Time:

  • added_to_team
  • authentication_challenge
  • channel_converted
  • channel_created
  • channel_deleted
  • channel_member_updated
  • channel_updated
  • channel_viewed
  • config_changed
  • delete_team
  • direct_added
  • emoji_added
  • ephemeral_message
  • group_added
  • hello
  • leave_team
  • license_changed
  • memberrole_updated
  • new_user
  • plugin_disabled
  • plugin_enabled
  • plugin_statuses_changed
  • post_deleted
  • post_edited
  • post_unread
  • posted
  • preference_changed
  • preferences_changed
  • preferences_deleted
  • reaction_added
  • reaction_removed
  • response
  • role_updated
  • status_change
  • typing
  • update_team
  • user_added
  • user_removed
  • user_role_updated
  • user_updated
  • dialog_opened
  • thread_updated
  • thread_follow_changed
  • thread_read_changed
  • file_deleted