Skip to content

This repository shows an example of implementing a gRPC server and client in Rust

License

Notifications You must be signed in to change notification settings

bjfssd757/gRPC_server

Repository files navigation

Rust

gRPC server

Этот репозиторий реализует gRPC сервер на языке Rust

Оглавление

Установка
Клиент
База данных
Изменения

Установка

Для запуска проекта вам потребуется скачать Rust.

Tip

Если вы используете unix систему: apt install -y protobuf-compiler Если у вас возникли проблемы или вопросы на этом этапе, прочитайте гайд по установке

  • Качаем Rust с официального сайта
  • Клонируем репозиторий: git clone https://github.com/bjfssd757/gRPC_server.git
  • Запускаем сервер: cargo run --bin server

Note

Также вы можете запустить клиента: cargo run --bin client.
Учтите, что клиент может отправить запрос только на включённый сервер!

Клиент

Код клиента реализован в файле client.rs

В любом случае для связи с сервером вам потребуется gRPC клиент, т.к. не все браузеры способны обрабатывать ответы от таких серверов. Также важно иметь такие же .proto файлы, какие есть на сервере.

Tip

На самом деле функционал "передачи" .proto файлов при обращении на сервер есть. О нём можно почитать в Интернете. На данный момент (пока вы видите эту вставку) данный проект не реализует такого функционала на клиенте.

База данных

Warning

На данный момент база данных работает не стабильно и может не запуститься! Если вы столкнули с такой проблемой, то большая просьба сообщить о ней в issues, упоминув свою операционную систему и сообщение об ошибке!
Если вы не хотите использовать базу данных, то вам потребуется удалить файл .env, файлы models.rs, schema.rs и diesel.toml, а также удалить зависимости из Cargo.toml (не обязательно, но желательно): r2d2, diesel, diesel_cli, r2d2-diesel. После этого вам потребуется переписать логику программы в файле main.rs в impl Calendar for CalendarService и impl CalendarService (129 и 108 строки соответственно). Вероятно, что вам также потребуется изменить типы данных в структурах (struct) и сообщения (message) в proto-файлах
Учтите, что для этого вам потребуются знания gRPC и в особенности языка Rust.
В будущем эта проблема будет решена!

В данном примере Rust работает с базой данных PostgreSQL с помощью библиотеки Diesel.

В файле .env указывается путь до вашей базы данных: DATABASE_URL=postgres://ваше_имя_профиля:ваш_пароль@localhost/название_базы_данных
Где ваше_имя_профиля - ваше имя в postgres;
ваш_пароль - пароль postgres;
localhost - адрес для подключения к базе. В данном случае база находится на этом же устройстве. Если потребуется, замените на нужный вам IP адрес;
название_базы_данных - название базы данных, с которой вы будете работать.

Перед запуском сервера вам необходимо создать базу данных PostgreSQL.
SQL shell (windows):

create database your_name;
\c your_name
create table table_name (smth);

Изменения

Проект будет развиваться со временем: исправление багов, добавление нового функционала!
Следите за обновлениями!

About

This repository shows an example of implementing a gRPC server and client in Rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages