rfc3921, исходящие сообщения
Вот в rfc3921, p.4.1. сказано:
4.1. Specifying an Intended Recipient An instant messaging client SHOULD specify an intended recipient for a message by providing the JID of an entity other than the sender in the 'to' attribute of the <message/> stanza. If the message is being sent in reply to a message previously received from an address of the form <user@domain/resource> (e.g., within the context of a chat session), the value of the 'to' address SHOULD be of the form <user@domain/resource> rather than of the form <user@domain> unless the sender has knowledge (via presence) that the intended recipient's resource is no longer available. If the message is being sent outside the context of any existing chat session or received message, the value of the 'to' address SHOULD be of the form <user@domain> rather than of the form <user@domain/resource>.
То есть получается, что первые сообщения всегда отсылаются на bare JID (без ресурса). После первого же ответа нужно начинать отвечать уже на full JID, и так до тех пор, пока ресурс не станет недоступным.
Отсюда два вопроса:
- Что делать, если у собеседника появляется ресурс с более высоким приоритетом? Продолжать отсылать сообщения на “старый” ресурс или переключаться на новый?
- “Забывать” ли кратковременно недоступный ресурс (например после реконнекта собеседника)? А если как раз в момент реконнекта появляется ресурс с более высоким приоритетом?
В RFC оба случая не описаны (Про Conversation Thread знаю).
Comments
На мой взгляд в #1 логично, что посылать надо на старый. Если что, ответят с нового. Щас проверил — именно так ведет себя Psi и это вполне удобно
В #2 я бы поступил так — проверял доступность / недоступность в момент отправки и исходил из этого
Первое вот не совсем логично (но лучше подходит под описание в RFC). Сидел себе чувак и переписывался с кем-то. Потом решил на пару минут выйти, но его там задержали. Достаёт он какой-нибудь нетбук и вылазит в онлайн с большим приоритетом. Соответственно про то, что ему пишут на старый ресурс он узнает только когда вернется.
Лично мне сейчас кажется, что тут на RFC надо забить. И при _любой_ смене доступных ресурсов “закрывать” сессию.
> вылазит в онлайн с большим приоритетом
при этом может написать “а я теперь тута” и создаст новую сессию. а если что пришло на комп, то в некоторых клиентах (Psi и вроде Gajim) можно получить эти мессаги на другой ресурс.
Я так понимаю, что открывая окошко чата, даже ничего не написав, мы уже имеем existing chat session. В том же Пси можно выбрать ресурс, с которым хочешь начать разговор.
Ага, а потом кто-то, проходя мимо моего стола, заденет мышку, и приоритет того клиента, откуда я ушёл, станет выше, чем у нетбука. Нафиг-нафиг.
Извини, не так понял. Ты предлагаешь «отвязываться» от ресурса при изменении множества ресурсов контакта. По-моему, это будет работать, только если одним аккаунтом пользуется один человек, который, как сущность не квантовая, в разных точках пространства находиться не может.
А если я на работе, а дома моим жабером захочет воспользоваться кто-то из домашних? Допустим, нет у моей мамы аккаунта своего. Я скажу: «Вася, пиши моей маме на ресурс „дом“», и начнётся хаос…
Лучше при появлении более приоритетного ресурса на другой стороне прямо в чатике рисовать текст и кнопочку: «У %username% появился более приоритетный ресурс. Возможно, он перешёл к другому компьютера или подключился с помощью мобильного устройства. [Продолжить общение с новым ресурсом?]»
Можно выбрать. Но по умолчанию Psi шлет сообщения на bare JID. И так до первого ответа.
Может написать. Но не обязан. Плюс для того, чтобы получить сообщения с другого ресурса, про них нужно знать/догадываться и принудительно “попросить” их отфорвардить. Во всяком случае в Psi.
Да. Пока что, как мне кажется, если общение начиналось без указания ресурса (т.е. на bare JID), то ресурс лучше всего перевыбирать при каждом изменении списка этих самых ресурсов. А если точнее — каждый раз “забывать” про имеющийся ресурс и слать сообщения на bare JID. Если исходить из предположения, что один JID == один человек (отбросив все другие варианты вроде один JID на двоих или один жид на компутер/посадочное место), то такое будет _всегда_ работать правильно.
IMHO это неправильная изначально идея. Как минимум я уже по привычке блокирую сессию при отходе от компьютера. К тому же случаи одного JID-а на двоих (даже временно) мне не известны. Ну и как вариант — если чат начинается не просто с клика/enter-а по контакту, а с указанием ресурса (Psi: Open chat to -> ресурс), то можно с этого ресурса и не сьезжать. Например, до тех пор пока ресурс не уйдет в оффлайн.
Comment form for «rfc3921, исходящие сообщения»