Надежная доставка сообщений XMPP
В некоторых случаях сервер не может определить состояние клиента на уровне сокета, иногда пользователь не подключается к серверу из-за сброса соединения, если возвращаемый сокет успешно завершен. Некоторые сообщения пропадают, как мы можем преодолеть эту проблему.
Клиент c1 отправляет сообщение серверу S1, сервер отправляет сообщение клиенту c2, мы можем определить состояние клиентского соединения при отправке через сокет, только если он вернул успех, мы можем предположить, что клиент жив и сообщение успешно отправлено. Однако какое-то время сообщение сбрасывается, потому что соединение больше не было и сокет не может предсказать? как можно преодолеть эту проблему.
socket m_Sock;
m_Sock.BeginSend(byteData, 0, byteData.Length, 0, out errCode, SendCallback, null
если код ошибки успешен, мы предполагаем, что сообщение было успешно отправлено этому клиенту, но когда оно не уведомляет об этом сразу же после разрыва соединения, после того, как через несколько секунд ожидается возврат кода ошибки в этом интервале, мы потеряли сообщения
if(errCode == SocketError.Success)