Лосось (протокол)
Протокол Salmon — это протокол обмена сообщениями, работающий через HTTP, предназначенный для децентрализации комментариев и аннотаций, сделанных к статьям ленты новостей, таким как сообщения в блогах. Это позволяет установить единую ветку обсуждения между источником статьи и любым читателем каналов или «агрегатором», подписывающимся на контент. Проще говоря, если статья появилась на трех сайтах: A (источник), B и C (агрегаты), то участники всех трех сайтов могли видеть и участвовать в одной цепочке разговоров независимо от того, с какого сайта они просматривали.
Пример
[ редактировать ]Источник предоставляет конечную точку Salmon — URL-адрес в метаданных RSS / Atom (стандартного) канала. Сайт-агрегатор отмечает конечную точку.
<link rel="salmon" href="http://example.org/salmon-endpoint"/>
Если участник агрегатора оставляет комментарий, агрегатор создаст комментарий в пользу источника.
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom'>
<id>tag:example.com,2009:cmt-0.44775718</id>
<author><name>[email protected]</name><uri>[email protected]</uri></author>
<thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0'
ref='tag:blogger.com,1999:blog-893591374313312737.post-3861663258538857954'>
tag:blogger.com,1999:blog-893591374313312737.post-3861663258538857954
</thr:in-reply-to>
<content>Salmon swim upstream!</content>
<title>Salmon swim upstream!</title>
<updated>2009-12-18T20:04:03Z</updated>
</entry>
Комментарий будет закодирован в формате Base64, снабжен цифровой подписью, помещен в конверт и отправлен POST обратно в источник через конечную точку.
POST /salmon-endpoint HTTP/1.1
Host: example.org
Content-Type: application/atom+xml
<?xml version='1.0' encoding='UTF-8'?>
<me:env xmlns:me="http://salmon-protocol.org/ns/magic-env">
<me:data type='application/atom+xml'>
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxlbnRyeSB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMjAwNS9BdG9tJz4NCiAgPGlkPnRhZzpleGFtcGxlLmNvbSwyMDA5OmNt
dC0wLjQ0Nzc1NzE4PC9pZD4NCiAgPGF1dGhvcj48bmFtZT50ZXN0QGV4YW1wbGUuY29tPC9uYW1l
Pjx1cmk+Ym9iQGV4YW1wbGUuY29tPC91cmk+PC9hdXRob3I+DQogIDx0aHI6aW4tcmVwbHktdG8g
eG1sbnM6dGhyPSdodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCcNCiAgICBy
ZWY9J3RhZzpibG9nZ2VyLmNvbSwxOTk5OmJsb2ctODkzNTkxMzc0MzEzMzEyNzM3LnBvc3QtMzg2
MTY2MzI1ODUzODg1Nzk1NCc+DQogICAgdGFnOmJsb2dnZXIuY29tLDE5OTk6YmxvZy04OTM1OTEz
NzQzMTMzMTI3MzcucG9zdC0zODYxNjYzMjU4NTM4ODU3OTU0DQogIDwvdGhyOmluLXJlcGx5LXRv
Pg0KICA8Y29udGVudD5TYWxtb24gc3dpbSB1cHN0cmVhbSE8L2NvbnRlbnQ+DQogIDx0aXRsZT5T
YWxtb24gc3dpbSB1cHN0cmVhbSE8L3RpdGxlPg0KICA8dXBkYXRlZD4yMDA5LTEyLTE4VDIwOjA0
OjAzWjwvdXBkYXRlZD4NCjwvZW50cnk+
</me:data>
<me:encoding>base64url</me:encoding>
<me:alg>RSA-SHA256</me:alg>
<me:sig>
EvGSD2vi8qYcveHnb-rrlok07qnCXjn8YSeCDDXlbhILSabgvNsPpbe76up8w63i2f
WHvLKJzeGLKfyHg8ZomQ
</me:sig>
</me:env>
Затем источник делает комментарий доступным в исходном канале, чтобы агрегаторы подписчиков могли обновить свое представление о разговоре. Протокол обеспечивает безопасность, так что каждый агрегатор и каждый участник однозначно идентифицируются, чтобы восходящая сторона могла применить меры для запрета или фильтрации мошеннических сайтов или участников, если это необходимо.
Приложения
[ редактировать ]Федеративные социальные сети, такие как GNU Social и Diaspora, используют Salmon, как определено в спецификации OStatus, для координации дискуссий между участниками, принадлежащими к разным серверам. Участник одного сервера может опубликовать статью, которая распространяется среди других пользователей по сети через Salmon, которые, в свою очередь, могут комментировать аналогичным образом.
См. также
[ редактировать ]- RSS
- АтомПаб
- Опубликовать Подписаться
- OStatus (упоминает пользователей OStatus, а не использование протокола Salmon)
Внешние ссылки
[ редактировать ]- Протокол Лосося — домашняя страница и техническая информация о протоколе.