@rf а кто знает где почитать как устроено взаимодействие серверов в федерации? Что бы не протокол, а простыми словами, вот пост, вот так распространяется, вот эти видят и т.д. Подозреваю сервера плеромы и мастодона еще и по разному реализуют взаимодействие.
Ну в целом всё так как @admin описал. Ты в своём комменте упоминаешь ники пользователей, твой инстанс рассылает сообщение на каждый инстанс упомянутого пользователя плюс на каждый инстанс тех пользователей, которые на тебя подписаны. Но при этом на каждый инстанс шлётся только один раз в один общий "shared inbox".
Плерома и Мастодон работают более менее одинаково и даже с Френдика более менее норм. А вот например Pixelfed, Hubzilla и т.д. что-то делают очень по своему, у меня с ними федерирование не работает.
@rf @3draven @ru @russian_mastodon #fediverse #mastodon@top @admin @rf @ru @russian_mastodon тут возникла ситуация, что в треде я не видел ответов. То есть. Есть корневой пост. Я отвечаю. Мне говорят, что уже отвечено. А в треде я вижу только три поста, корень, свой и ответ мне. Я не в бане насколько я понимаю. Как такое может быть?
Если тебя не помянули в комменте и никто с твоего инстанса не подписан на того автора, то копия сообщения на твой инстанс не будет послана, поэтому твой инстанс с большой вероятностью этот коммент не увидит. На мало популярных серверах это распространённое явление.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon а есть где то апи для того что бы считать и дочитывать тред? И где межсерверное описано?
@top @admin @rf @ru @russian_mastodon ну и фронт тоже читает треды, он это делает этим эндпоинтом?
> ну и фронт тоже читает треды, он это делает этим эндпоинтом?
Фронт обращается только к своему серверу, к чужим не обращается.
> а есть где то апи для того что бы считать и дочитывать тред?
У мастодона есть межсерверное апи, через которое можно запросить ответы (у плеромы нет, например), но используется ли оно на практике я не видел.
> И где межсерверное описано?
API можно исследовать самостоятельно курлом, например:
curl -H 'Accept: application/activity+json' 'https://mtdn.anyqn.com/users/3draven/statuses/109653670409451907' | python3 -m json.tool
Смотри директиву "replies" в ответе, там ссылка на соответствующий api для получения ответов на пост.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon спасибо, пойду копаться
@top @admin @rf @ru @russian_mastodon а, это все же активити паб. Придется читать таки.
Ну да, всё межсерверное взаимодействие происходит по протоколу AP.
А да, не очевидный момент, о котором мало где упоминают, ко многим урлам что ты видишь в адресной строке браузера на AP инстансах, можно обратиться передав хедер Accept: application/activity+json и тогда сервер вернёт ответ в формате jsonld, а не html.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon начал смотреть и кажется клиентский апи мастодона не соответсвует спеке. Буду копаться дальше. Спасибо.
@top @admin @rf @ru @russian_mastodon
Вот конкретно
https://mtdn.anyqn.com/inbox
https://mtdn.anyqn.com/users/3draven/inbox
Этих эндпоинтов нет. А именно они нужны что бы прочитать все ответы во всех тредах, что накопились с момента последней проверки. Что бы не читать миллион раз по каждому треду по отдельности.
Я так понимаю у мастодона вместо
https://mtdn.anyqn.com/inbox -> /api/v1/timelines/public
А вместо второго вообще неясно, что использовать пока. Бида.
@top @admin @rf @ru @russian_mastodon
Вот за хидер спасибо, полезный. С него зашел в
https://mtdn.anyqn.com/users/3draven
там эндпоинты в ответе описаны
"inbox": "https://mtdn.anyqn.com/users/3draven/inbox",
"sharedInbox": "https://mtdn.anyqn.com/inbox"
Но на серваке их реально нет.
inbox для входящих post запросов, а то что ты ищешь это outbox.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon
Видать я плохо читал. Мне показалось, что outbox это эндпоинт что бы получить, что написал юзер, а inbox это то, что написали ему. То есть если я хочу получить все ответы на все треды юзера мне надо именно inbox, нет? Причем мне надо получить ответы и самого юзера на его треды и других людей, на все треды юзера. То есть инкрементное развитие всех тредов с определенного момента в прошлом до текущего. Что бы периодически считывать развитие бесед.
Не, по идее в outbox только то что юзер отправил в паблик. Эндпоинт inbox принимает только post запросы (хотя может с авторизацией и отдаст то что ему предназначено, хз, это не исследовал). Можно ли как-то прямым путём получить сообщения, предназначенные другому пользователю, хоть и публичные, это хз.
@admin @rf @ru @russian_mastodon @3draven@top @admin @rf @ru @russian_mastodon
Спасибо. Пойду копаться дальше.
@top @admin @rf @ru @russian_mastodon
Ну и да, я с авторизацией все вызываю. То есть задачка прочитать развитие всех моих бесед, а не произвольных юзеров :)
@top @admin @rf @ru @russian_mastodon
В мастодоне есть еще апи
https://mtdn.anyqn.com/api/v1/statuses/109632512947864473/context
если вызвать с айдишником корня беседы, то он высдаст всех потомков корня. Но это надо по каждой беседе ходить, а у меня их уже 1к или около того, а через год будет 100к. В общем пока непонятно. Подозреваю в итоге придется просто мониторить.
/api/v1/timelines/public
Если этот фид содержит все сообщения сервака.
Это апи для фронтенда, для межсерверных взаимодействий не используется.
@admin @rf @ru @russian_mastodon @3draven