Mobile Telegram Protocol (MTProto) пакет написан на es6
MTProto это протокол сервиса Telegram "придуман для работа с серверами API из мобильных приложений".
Mobile Protocol подразделяться на 3 части (с официального сайта):
- Компонент высшего уровня (API query language): определяет методы через которые запросы и ответы преобразуются в двоичные сообщения.
- Криптографический слой (для авторизаций): определяет методы через которые сообщения шифруются перед передачей.
- Транспортный компонент: определяет протоколы по которым будут общаться клиент и сервер (такие как, http, https, tcp, udp).
Никакие другие пакеты не нужны. Пакет telegram-mtproto позволяет реализовать все возможности работы с Mobile Protocol:
-
Выший уровень api для подключения к серверу
-
API которая работает через промисы
-
HTTP подключения которые выполняют перенос данных
-
Web worker - сверх быстрые криптографическеские работы в фоновом режиме
-
Реализация AES и RSA-шифрования шифрования, для безопасности
-
Обе методы plain-text и encrypted message для передачи данных на сервер
-
Обмен ключами Диффи-Хеллмана поддерживающие функцию prime factorization, для безопасности
-
MTProto TL-Schema сборник javascript классов и функций
-
async storage для сохранения данных между сесиями
$ npm install --save telegram-mtproto@beta
import MTProto from 'telegram-mtproto'
const phone = {
num : '+79123456789',
code: '22222'
}
const api = {
layer : 57,
initConnection : 0x69796de9,
api_id : 49631
}
const server = {
dev: true // Подключаемся к тестовому серверу.
} // Пустые поля конфигураций можно не указывать
const client = MTProto({ server, api })
async function connect(){
const { phone_code_hash } = await client('auth.sendCode', {
phone_number : phone.num,
current_number: false,
api_id : 49631,
api_hash : 'fb050b8f6771e15bfda5df2409931569'
})
const { user } = await client('auth.signIn', {
phone_number : phone.num,
phone_code_hash: phone_code_hash,
phone_code : phone.code
})
console.log('Вы вошли как ', user)
}
connect()
Выше мы использовали две функции из API.
type auth.sendCode = (phone_number: string, sms_type: int,
api_id: int, api_hash: string, lang_code: string) => {
phone_registered: boolean,
phone_code_hash: string,
send_call_timeout: int,
is_password: boolean
}
type auth.signIn = (phone_number: string, phone_code_hash: string, phone_code: string) => {
expires: int,
user: User
}
Больше про авторизаций, а также о многих других методах, Вы можете прочитать в официальной документаций.
Дополнительные примеры можно посмотреть в папке с примерами.
Вы можете использовать наши основные хранилищи localForage for saving data. Module accepts the following interface
interface AsyncStorage {
get(key: string): Promise<any>;
set(key: string, value: any): Promise<void>;
remove(...keys: string[]): Promise<void>;
clear(): Promise<void>;
}
import { MTProto } from 'telegram-mtproto'
import { api } from './config'
import CustomStorage from './storage'
const client = MTProto({
api,
app: {
storage: CustomStorage
}
})
Проект запущен под Mit License