Про Web Worker та обробку онолень для клона Reddit
Ще раз уточнюю структуру того як влаштовані оновлення, як відбувається отримання оновлень на клієнті
Стрічка оновлень користувача знаходиться за адресою /u/:user_id/updates.json яка представляє собою JSON Feed. Стрічка утримає оновлення користувача за останній день та посилання на стрічку за попередній день.
Нове створене оновлення попадає в таблицю D1 updates. Оновлення представляє собою наступну структуру:
1
2
3
4
5
6
7
{
id: 'SHORT_UUID',
type: '1-post|2-comment|3-repost|4-react|5-subscribe',
user_id: 'SHA1',
date: 'UNIX_TIMESTAMP',
data: {}
}
data відрізняється для кожного типу оновлень:
Для post:
1
2
3
4
5
{
title: '',
description: '',
image: '', url: ''
}
Для comment:
1
2
3
4
5
{
parent: null,
text: ''
url: ''
}
Для repost:
1
2
3
{
url: ''
}
Для react:
1
2
3
4
{
update_id: 'SHORT_UUID',
type: '1-thumb_up|2-thumb_down|3-...'
}
Для subscribe:
1
2
3
{
uri: '/u/:user_id|/m/:mirror|/p/:post_id'
}
Індексатор
Стрічку користувача формує серверний скріпт, який зчитує оновлення за останні 24 години та створює або оновлює файли:
/u/:user_id/updates.json– оновлення корстувача за останні 24 години з посиланням на попередню дату;/u/:user_id/:year/:month/:day/updates.json– копія/u/:user_id/updates.json– оновлення корстувача за останні 24 години з посиланням на файлupdates.jsonпопередньої дати – попередню дату бере зdates.json;/u/:user_id/dates.json– зчитує файл, перевіряє наявність сьогоднішньої дати, якщо дати немає – додає та оновлює файл, якщо дата є – нічого не робить;/updates.json– оновлення всіх користувачів за останні 24 години;/dates.json- зчитує файл, перевіряє наявність сьогоднішньої дати, якщо дати немає – додає та оновлює файл, якщо дата є – нічого не робить;/p/:post_id/:year/:month/:day/updates.json– зчитує файл, додає оновлення та записує посилання на попередню дату – попередню дату бере зdates.json;/p/:post_id/updates.json– зчитує файл, додає оновлення та записує посилання на попередню дату;/p/:post_id/dates.json– зчитує файл, перевіряє наявність сьогоднішньої дати, якщо дати немає – додає та оновлює файл, якщо дата є – нічого не робить.
Структура /dates.json:
1
[20240101, 20240102]
Види фідів
- S3
s.server.com/updates.json– фід з оновленнями за останні 24 години - S3
s.server.com/u/:user_id/updates.json– фід з оновленнями користувача за останні 24 години - S3
s.server.com/p/:post_id/updates.json– фід з оновленнями поста за останні 24 години - Function
server.com/m/:mirror/updates.json– дзеркало-фід з оновленнями з інших веб-ресурсів
Публікація захищена ліцензією CC BY 4.0 .