Проектная лаборатория

Собственный Redis

0 / 124этапов пройдено

Этап 88 · Публикация и подписка

PING в режиме подписки

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы добавите ответы на PING для клиента в режиме подписки.

PING в режиме подписки

Если клиент отправляет ping после перехода в режим подписки, Redis возвращает не обычный ответ (+PONG\r\n), а массив RESP из двух элементов:

  1. "pong" как объёмную строку.
  2. "" — пустую объёмную строку.

Тесты

Тестирующая программа запустит вашу программу так:

$ ./your_program.sh

Затем отправит серверу SUBSCRIBE, чтобы перейти в режим подписки:

$ redis-cli
> SUBSCRIBE foo
# Expecting ["subscribe", "foo", 1]

После этого отправит PING.

> PING 

Ожидается массив ["pong", ""] в RESP, который выглядит так:

*2\r\n
$4\r\n
pong\r\n
$0\r\n
\r\n

Тест также отправит PING от отдельного клиента, не подписанного ни на один канал.

> PING

Ожидается ответ +PONG\r\n: "PONG" как простая строка RESP.

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init redis ./my-redis --language go

2. Откройте папку в IDE

cd ./my-redis

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage lf1

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста