Получите один проект clojure, чтобы «общаться» через локальный сервер - PullRequest
0 голосов
/ 30 марта 2020

У меня есть проект, который генерирует головоломку и решает ее в отдельных классах, используя REPL. Есть ли способ разделить эти классы на отдельные проекты, чтобы я мог создать сервер, который находится на том же компьютере, и мог бы найти уже созданные головоломки и вернуть их вызывающему клиенту (решателю головоломок) без использования веб-серверов?

Обновление: изначально неправильно понял, что я пытался сделать, и перефразировал мой вопрос

1 Ответ

0 голосов
/ 31 марта 2020

Определенно, вы можете. В общих чертах вы, вероятно, захотите:

  • Единый проект с чистыми пространствами имен клиента, сервера и общего доступа (например, logi c о решении головоломок, которые могут быть разделены между клиентом и сервером). Вначале нет ничего плохого в объединении всего кода (позже вы можете отправить клиент + общий ресурс и сервер + общий ресурс отдельно)
  • Библиотека, упрощающая взаимодействие клиент / сервер. Распространенным вариантом использования является предоставление сервера с веб-API, потому что также проще тестировать с веб-браузерами, клиентами CLI (такими как cURL), но это нормально, если вы хотите использовать простые сокеты и обмениваться сообщениями в любом формате (строки EDN? ) имеет смысл для вас.
    • Примером библиотеки для сокетов будет https://github.com/atroche/clj-sockets, если вы не хотите использовать Java взаимодействие и использовать классы из пакета java.net напрямую.
    • Также обратите внимание, что веб-серверы на самом деле также являются сокет-серверами, которые прослушивают соединения через фиксированные порты (например, 80, 443 или 8080) для сообщений HTTP, используя определенные соглашения (например, GET /api/puzzles/1)
  • Наконец, вам понадобится как минимум два пространства имен, экспортирующих метод -main: одно для запуска сервера и другое для запуска клиента.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...