Веб-сокет
В дополнение к 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