Направляющие: Леса, чтобы автоматически сделать связь "один ко многим"

Может ли сервер записывать текст на веб-страницу после ее загрузки? Да, это определенно так, но в наши дни я подозреваю, что это делается редко. Я начал веб-разработку в 1990-х годах, и тогда это было довольно распространенным методом. Мы использовали его для написания сообщений чата в браузерах без Javascript. В наши дни Javascript является вездесущим и мощным, поэтому использование клиентского Javascript для обновления страницы будет лучшим вариантом в большинстве случаев.

Тем не менее, технологии, которые мы использовали для написания серверных обновлений, должны работать. Я подозреваю, что причина того, что вы не видите обновления в вашем браузере, заключается в том, что он не знает, что должен начать показывать страницу до того, как все загрузится. Использование chunked Transfer Encoding , технологии 1990-х, все еще поддерживаемой современными браузерами, должно решить эту проблему. Это позволяет серверу указывать, когда «чанка» данных завершена, и браузеры обычно обрабатывают каждый чанк немедленно, а не ожидают прибытия всех чанков.

Самый простой способ использовать chunked Transfer Encoding - это использовать HTTP-библиотеку, подобную Apache HttpComponents , а затем обернуть ваш выходной поток в соответствующий класс:

final var socket = new java.net.ServerSocket(1234);
for (;;)
{
  try (final var client = socket.accept())
  {
    var outputStream = new ChunkedOutputStream(client.getOutputStream());
    outputStream.write("HTTP/1.1 200 OK\r\n\r\n".concat(java.time.Instant.now().toString()).getBytes());
    outputStream.flush();
    Thread.sleep(1000L);
    outputStream.write("And another paragraph.".getBytes());
  }
}

14
задан Community 23 May 2017 в 11:45
поделиться

4 ответа

Это верно, но, это не конец истории. Существует по крайней мере две альтернативы Лесам, что и работайте вполне хорошо и автоматически возьмите на отношениях между классами (на основе Ваших индикаторов отношений ActiveRecord как has_many). Одна из этих альтернатив Оптимизирована , и другой ActiveScaffold.

Они главным образом полезны для ввода в данные, что Ваша система требует, чтобы это не было вводимыми данными пользователя. Например, я использую их для задач администрирования на таблицах, где нет никакого смысла в создании полного UI для CRUD, когда одна из альтернатив лесов сделает задание очень хорошо для редко используемой функции. Вы не хотели бы использовать их для комментариев к сообщениям все же.

12
ответ дан 1 December 2019 в 08:53
поделиться

Да. Леса работают на модель и связанный контроллер. Это не заботится об или работает с отношениями.

главная цель Лесов состоит в том, чтобы получить CRUD, идущий на модель с помощью контроллера и связанных представлений.Это все. Любое другое требование как отношения должно быть кодировано вручную.

13
ответ дан 1 December 2019 в 08:53
поделиться

Леса являются лесами. Когда Вы хотите что-либо кроме CRUD на таблице (который является тем, что леса/), необходимо изменить сгенерированный код лесов или самокрутку.

1
ответ дан 1 December 2019 в 08:53
поделиться

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

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

3
ответ дан 1 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: