Работа с сервером

Если у вас нет сервера, вы можете переопределить методы бэкенд сервиса и вернуть промис данных с клиента. Если вы используете встроенный бэкенд, вам необходимо передать значение токена свойству token после успешной авторизации пользователя.

Сервис Backend

Бэкенд это серверная модель, объект, у которого есть методы для отправки запросов.
Ознакомьтесь с полным списком методов.

Как переопределить сервис Backend

Чтобы переопределить сервис Backend, необходимо:

  • унаследовать его;
  • использовать свойство override.
class MyBackend extends chat.services.Backend {
  // новые методы 
}
 
webix.ui({
  view: "chat",
  url: "//localhost:3200/",
  override: new Map([
    [chat.services.Backend, MyBackend]
  ])
});

Работы с данными на клиенте

Если у вас есть данные на клиенте, вы можете вернуть их промисом:

class MyBackend extends chat.services.Backend {
  // вы можете перехватывать и кастомизировать серверные запросы
  messages(chatId) {
    return Promise.resolve([
      {
        user_id: 1,
        text: "[Ваше сообщение] Работа в режиме offline",
      }
    ]);
  }
}

Методы сервиса Backend

Chat использует WebSocket протокол, поэтому соединение устанавливается один раз. Также стоит обратить внимание, что операции по добавлению чата/сообщения, редактированию или удалению выполняются от лица текущего пользователя.

users()

Метод загружает массив пользователей.

Response data:

Метод возвращает промис с массивом объектов пользователей. Каждый объект имеет следующую структуру:

[
  {
    avatar: "remote/avatars/1.jpg",
    email: "alex@brown.com",
    id: 1,
    name: "Alex Brown",
    status: 2
  },
  { .. }
]

chats()

Метод загружает массив чатов.

Response data:

Метод возвращает промис с массивом объектов чатов. Каждый объект имеет следующую структуру:

[
  {
    avatar: "remote/avatars/photo.jpg",
    date: new Date(),
    direct_id: 17,
    id: 52,
    message: "Выпьем чаю с малиновым вареньем?",
    name: "PM: Jean Catwright",
    unread_count: 0,
    users: [3, 17]
  },
  { .. }
]

addChat(uid)

Метод вызывается при создании нового приватного чата.

Parameters:

  • uid (number) - ID пользователя, с которым создаётся приватный чат.

Response data:

Метод возвращает промис с объектом чата:

{
  avatar: "remote/avatars/pm.jpg",
  date: new Date(),
  direct_id: 17,
  id: 52,
  message: "Ну и гадость эта ваша заливная рыба!"
  name: "Дом на Новокузнецкой",
  unread_count: 1,
  users: [3, 17]
}

messages(cid)

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

Parameters:

  • cid (number) - ID желаемого чата.

Response data:

Метод возвращает промис с массивом объектов сообщений:

[
 {
   chat_id: 6,
   date: new Date(),
   id: 19,
   text: "И всё-таки она вертится!",
   user_id: 2
 }
]

addMessage(cid, text, origin)

Метод добавляет новое сообщение в указанный чат.

Parameters:

  • cid (number) - ID чата;
  • text (string) - текст сообщения;
  • origin (number) - клиентское ID сообщения.

Response data:

Метод возвращает объект сообщения:

{
  chat_id: 31,
  date: new Date(),
  id: 75,
  text: "Глаголом жги сердца людей!",
  user_id: 3
}

removeMessage(messageId)

Метод удаляет указанное сообщение.

Parameters:

  • messageId (number) - ID сообщения.

Метод возвращает объект сообщения:

{
  chat_id: 31,
  date: new Date(),
  id: 71,
  text: "",
  user_id: 0
}

updateMessage(messageId, text)

Метод обнавляет указанное сообщение.

Parameters:

  • messageId (number) - ID сообщения;
  • text (string) - текст сообщения.

Response data:

Метод возвращает объект сообщения:

{
  chat_id: 31,
  date: new Date(),
  id: 76,
  text: "А судьи кто?",
  user_id: 3
}

resetCounter(cid)

Метод сбрасывает счётчик непрочитанных сообщений в указанном чате.

Parameters:

  • cid (number) - ID чата.

Метод ничего не возвращает.

addGroupChat(name, avatar, users)

Метод создаёт групповой чат.

Parameters:

  • name (number) - имя чата;
  • avatar (string) - URL для загрузки аватара;
  • users (array) - ID пришлашённых пользователей.

Response data:

Метод возвращает промис с объектом чата:

{
  avatar: "remote/avatars/picture.jpg",
  date: new Date(),
  direct_id: 0,
  id: 61,
  message: "",
  name: "Hikikomori",
  unread_count: 0,
  users: [4, 5, 3, 1, 87]
}

updateChat(chatId, name, avatar)

Метод обновляет указанный чат.

Parameters:

  • chatId (number) - ID чата;
  • name (string) - имя чата;
  • avatar (string) - URL для загрузки аватара.

Response data:

Метод возвращает промис с объектом чата:

{
  avatar: "remote/avatars/another_picture.jpg",
  date: new Date(),
  direct_id: 0,
  id: 61,
  message: "",
  name: "Новый чат", 
  unread_count: 0,
  users: [4, 5, 3, 1, 87]
}

leave(chatId, userId)

Метод вызывается, когда пользователь покидает чат.

Parameters:

  • chatId (number) - ID чата;
  • userId (number) - ID пользователя.

Response data:

Сервер возвращает null, если пользователь успешно покинул чат.

setUsers(chatId, users)

Метод вызывается, когда текущий пользователь добавляет/удаляет другого пользователя

Parameters:

  • chatId (number) - ID чата
  • users (array) - ID учатников чата.

Response data:

Мето возвращает промис с объектом чата:

{
  avatar: "remote/avatars/another_picture.jpg",
  date: new Date(),
  direct_id: 0,
  id: 61,
  message: "Огласите весь список, пожалуйста",
  name: "Подработка", 
  unread_count: 0,
  users: [4, 5, 3, 1, 87]
}

avatarUploadUrl()

Метод возвращает URL для загрузки аватаров для чатов.

Returns:

this.app.config.url + "/chat/0/avatar";
Наверх