You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@mina.apache.org by Charlie Youakim <ch...@gmail.com> on 2011/03/14 20:19:12 UTC

Does XMPP truly handle presence?

Hello Users,

I hope I'm doing this correctly.  I'm a new user and I've never done an
email to a listserve like this.

I’m emailing the group because I actually have an observation and a question
about XMPP and Vysper.  I’m new to XMPP. Very new. I’ve been looking and
testing with it for the last couple of days. My problem is that I don’t feel
like the “Presence” portion of the protocol works all that great, at least
on my initial tests with Openfire and ejabberd2. If I work as normal, sure,
it works perfectly. But, I was a bit harder on it. First I killed my
internet connection by disabling wifi through my OS(I tested it in Linux and
Windows). XMPP still worked on every test in this manner. That’s GREAT!

The problem was with my next test. I decided to kill my wifi radio by
disabling it through hardware. Here’s where I couldn’t get XMPP’s Presence
to work. The user on this machine always stayed online, despite the wifi
radio being killed through hardware.  Every time this was tested on my
Android phone (pulling the battery), or on my laptop (killing the radio),
the XMPP server would fail to recognize the disconnection and the user would
stay online.

This is something I’ve noticed in G-Chat as well. On a user’s computer
crash, or power loss, some users can just hang there online.

My question to users:  Can XMPP handle this case for Presence detection? It
seems to me that it can’t, which worries me.  Can Vysper handle this?

Thanks for any input.  I'm interested to hear opinions from experts in the
area of XMPP.

(As a side note I turned on the ping service and was able to detect the
disconnect, but it seems strange to me that I should require an addon to
handle presence detection, when the protocol has the idea of Presence in its
title.)

-Charlie

Re: Does XMPP truly handle presence?

Posted by Bernd Fondermann <be...@googlemail.com>.
On Mon, Mar 14, 2011 at 20:58, Charlie Youakim
<ch...@gmail.com> wrote:
> Thank you for the response.  I'll repost the question to XMPP.org, but I
> think you've handled most of what I curious about.
> My situation:
> On the server side I have done nothing.  It was a stock install of both
> ejabberd and Openfire.  On the client side it was as simple as pulling the
> power on the client or switching off the wifi radio (there's a switch for
> the radio on the two laptops I used).  In all cases the user stayed
> "Available".  I can understand that this is difficult to fix, but one area I
> think could be improved upon is this:  After client1 was disconnected
> (powered down) I messaged them through client2 (because the server still
> told my client2 that client1 was "Available".  At this point it would seem
> to me that the server must attempt to send something to client1.  Doesn't
> the server see an error upon this send?  If so, can't it automatically
> adjust and say that client1 is now unavailable?

You are right by saying that the server must notify contacts if the
server notices that a client has become unavailable.
This is a XMPP requirement.
Do you see this problem with the latest Vysper release? I know that we
improved this area not too long ago. But maybe we didn't catch all
cases.

  Bernd

Re: Does XMPP truly handle presence?

Posted by Charlie Youakim <ch...@gmail.com>.
Thank you for the response.  I'll repost the question to XMPP.org, but I
think you've handled most of what I curious about.

My situation:
On the server side I have done nothing.  It was a stock install of both
ejabberd and Openfire.  On the client side it was as simple as pulling the
power on the client or switching off the wifi radio (there's a switch for
the radio on the two laptops I used).  In all cases the user stayed
"Available".  I can understand that this is difficult to fix, but one area I
think could be improved upon is this:  After client1 was disconnected
(powered down) I messaged them through client2 (because the server still
told my client2 that client1 was "Available".  At this point it would seem
to me that the server must attempt to send something to client1.  Doesn't
the server see an error upon this send?  If so, can't it automatically
adjust and say that client1 is now unavailable?

On Mon, Mar 14, 2011 at 2:46 PM, Bernd Fondermann <
bernd.fondermann@googlemail.com> wrote:

> On Mon, Mar 14, 2011 at 20:19, Charlie Youakim
> <ch...@gmail.com> wrote:
> > Hello Users,
> >
> > I hope I'm doing this correctly.  I'm a new user and I've never done an
> > email to a listserve like this.
> >
> > I’m emailing the group because I actually have an observation and a
> question
> > about XMPP and Vysper.  I’m new to XMPP. Very new. I’ve been looking and
> > testing with it for the last couple of days. My problem is that I don’t
> feel
> > like the “Presence” portion of the protocol works all that great, at
> least
> > on my initial tests with Openfire and ejabberd2. If I work as normal,
> sure,
> > it works perfectly. But, I was a bit harder on it. First I killed my
> > internet connection by disabling wifi through my OS(I tested it in Linux
> and
> > Windows). XMPP still worked on every test in this manner. That’s GREAT!
> >
> > The problem was with my next test. I decided to kill my wifi radio by
> > disabling it through hardware. Here’s where I couldn’t get XMPP’s
> Presence
> > to work. The user on this machine always stayed online, despite the wifi
> > radio being killed through hardware.  Every time this was tested on my
> > Android phone (pulling the battery), or on my laptop (killing the radio),
> > the XMPP server would fail to recognize the disconnection and the user
> would
> > stay online.
> >
> > This is something I’ve noticed in G-Chat as well. On a user’s computer
> > crash, or power loss, some users can just hang there online.
> >
> > My question to users:  Can XMPP handle this case for Presence detection?
> It
> > seems to me that it can’t, which worries me.  Can Vysper handle this?
> >
> > Thanks for any input.  I'm interested to hear opinions from experts in
> the
> > area of XMPP.
> >
> > (As a side note I turned on the ping service and was able to detect the
> > disconnect, but it seems strange to me that I should require an addon to
> > handle presence detection, when the protocol has the idea of Presence in
> its
> > title.)
>
> Great post.
>
> For general questions about the XMPProtocol I'd like to point you to
> xmpp.org, the authorative body for "all things XMPP". And we cannot
> speak for Openfire or ejabberd either.
>
> In general, detecting disconnecting clients can be tricky. This is not
> a matter of XMPP (a protocol specified on the application layer of the
> OSI model), but primarily a matter of the underlying transport
> protocol, TCP/IP in this case. The nature of TCP/IP, with it's
> timeouts, in-between routers, firewall settings etc. can make it
> difficult to detect abruptly terminated connections without actually
> sending data over the wire.
>
> So overall XMPP is fine, while in practice it can prove difficult to
> detect the situations you are testing.
>
> However, I'd expect we could do better and improve Vysper in the kind
> of situations you are describing. Please provide exactly what you do
> on client and server side and what the results are.
>
> Thanks,
>
>  Bernd
>

Re: Does XMPP truly handle presence?

Posted by Bernd Fondermann <be...@googlemail.com>.
On Mon, Mar 14, 2011 at 20:19, Charlie Youakim
<ch...@gmail.com> wrote:
> Hello Users,
>
> I hope I'm doing this correctly.  I'm a new user and I've never done an
> email to a listserve like this.
>
> I’m emailing the group because I actually have an observation and a question
> about XMPP and Vysper.  I’m new to XMPP. Very new. I’ve been looking and
> testing with it for the last couple of days. My problem is that I don’t feel
> like the “Presence” portion of the protocol works all that great, at least
> on my initial tests with Openfire and ejabberd2. If I work as normal, sure,
> it works perfectly. But, I was a bit harder on it. First I killed my
> internet connection by disabling wifi through my OS(I tested it in Linux and
> Windows). XMPP still worked on every test in this manner. That’s GREAT!
>
> The problem was with my next test. I decided to kill my wifi radio by
> disabling it through hardware. Here’s where I couldn’t get XMPP’s Presence
> to work. The user on this machine always stayed online, despite the wifi
> radio being killed through hardware.  Every time this was tested on my
> Android phone (pulling the battery), or on my laptop (killing the radio),
> the XMPP server would fail to recognize the disconnection and the user would
> stay online.
>
> This is something I’ve noticed in G-Chat as well. On a user’s computer
> crash, or power loss, some users can just hang there online.
>
> My question to users:  Can XMPP handle this case for Presence detection? It
> seems to me that it can’t, which worries me.  Can Vysper handle this?
>
> Thanks for any input.  I'm interested to hear opinions from experts in the
> area of XMPP.
>
> (As a side note I turned on the ping service and was able to detect the
> disconnect, but it seems strange to me that I should require an addon to
> handle presence detection, when the protocol has the idea of Presence in its
> title.)

Great post.

For general questions about the XMPProtocol I'd like to point you to
xmpp.org, the authorative body for "all things XMPP". And we cannot
speak for Openfire or ejabberd either.

In general, detecting disconnecting clients can be tricky. This is not
a matter of XMPP (a protocol specified on the application layer of the
OSI model), but primarily a matter of the underlying transport
protocol, TCP/IP in this case. The nature of TCP/IP, with it's
timeouts, in-between routers, firewall settings etc. can make it
difficult to detect abruptly terminated connections without actually
sending data over the wire.

So overall XMPP is fine, while in practice it can prove difficult to
detect the situations you are testing.

However, I'd expect we could do better and improve Vysper in the kind
of situations you are describing. Please provide exactly what you do
on client and server side and what the results are.

Thanks,

  Bernd