Про 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
.