Projects tigase _server server-core Issues #166
Packet delivery confirmation - REQ/ACK (#166)
Artur Hefczyc opened 1 decade ago

To ensure packets are never just lost, a simple protocol for packet delivery must be implemented. This extension must work for all connection types, that is: c2s, s2s and external component. This is supposed to be a low-level extension, support for this extension may show up in stream features but it may not show up in service discovery features.

This extension is designed only to confirm that the packet has been successfully transmitted over the network connection. It says nothing about delivery to a final destination. The motivation behind the extension is to resolve problem with packets lost due to unreliable TCP/IP connections, mainly on mobile networks.

The initial plan is that it works in a following way:

Sender sends a packet such like this one:

<message from="senderJID" to="receiverJID" type="chat">
  <body>this is a message</body>
</message>

If packet delivery confirmation is required, it should add req payload like this:

<req id="Int_number"/>

So the resulting packet sent through the network connection looks like this:

<message from="senderJID" to="receiverJID" type="chat">
  <body>this is a message</body>
  <req id="Int_number"/>
</message>

Receiver responds with ACK

The ACK means that the packet has been successfully transmitted over the network connection only. It says nothing about delivery to a final destination.

In response the other side of the connection sends a simple ack XML element:

<ack id="Int_number"/>

It means packet with id int_number has been successfully transmitted over the network connection.

Artur Hefczyc commented 1 decade ago

Replaced by XEP-0198 stream management implementation: #1474

issue 1 of 1
Type
New Feature
Priority
Normal
Assignee
RedmineID
911
Version
tigase-server-5.2.1
Estimation
80h
Issue Votes (0)
Watchers (0)
Reference
tigase/_server/server-core#166
Please wait...
Page is in error, reload to recover