Closed GoogleCodeExporter closed 9 years ago
The log actually looks good! The only thing that comes to my mind is a forgotten
registration for <event xmlns="http://jabber.org/protocol/pubsub#event"> or
item(s),
which would (of course) block the parsing. Could you verify (with a pkg
listener)
that the parsing chain is in deed working?
Original comment by rtreffer@gmail.com
on 19 Apr 2010 at 10:09
Dear René,
First of all, I would like explain better the log that I sent you. In fact, I
forgot
to mention that the log is produced by an Android application which either acts
as
publisher and subscriber. Thus, the log contains also the subscriber XML
communication.
I have tryed to understand the XML communication too, and I have noticed the
following xml stanza
<iq type="error" id="M0ynN-6" from="pubsub.acer-sele" to="user1@acer-
sele/Smack"><pubsub xmlns="http://jabber.org/protocol/pubsub"><publish
node="SeleneNode"><item id="titolo1"><book xmlns="pubsub:test:book"><title>the
lord
of the rings</title></book></item></publish></pubsub><error code="403"
type="auth"><forbidden
xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
Considering that I'm not an expert of the XMPP protocol, I thought it was an
error
sent from by Openfire (XMPP Server) to the ASmack publisher, am I right? If
that is
the case the problem seems to be related not to the subscriber but to the
publishing
phase which seems to fail.
Thanks you in advance for your help and time,
Selene
Original comment by el3t...@gmail.com
on 21 Apr 2010 at 2:32
Yes, this is an error message. Which is different from "Listener not working"
(I've
investigated just that).
Posting rights depend on your "affiliation" with a pubsub node, see
http://xmpp.org/extensions/xep-0060.html#affiliations
Please check that your client has sufficient rights to post. XEP-0060 is quite
long,
but you should have a basic understanding of affiliations, subsciptions, nodes
and items.
You should look into PSI (a good-for-debugging xmpp client, just enable the "xml
console"). Then try to send (modified version of) the stanzas described in
http://xmpp.org/extensions/xep-0060.html#entity-affiliations
Do you have other clients succeeding at posting?
Regards,
René
Original comment by rtreffer@gmail.com
on 21 Apr 2010 at 3:22
Dear René,
I have helped Selene in performing further testing and we figure out that the
problem
is a bit different. In fact, from your last message you confirm that the
problem was
not the callback of the listener but the publishing that was failing. Thus, we
performed other tests to understand better the problem. Following the test that
we
performed.
A - Preliminary Test:
Two Java plain application (both using Smack from SVN), namely Publisher and
Subscriber. The Publisher was generating events every 5s, while the Subscriber
subscribe to event and show them on the STDOUT.
The test worked perfectly, thus from now on, we can rely on the goodness of both
Publisher and Subscriber for testing ASmack.
B - Testing ASmack PubSub status:
B.1 - ASmack used as Publisher
We started the Java Subscriber application, and later we started the Android
application which publishes events. The result was that the Subscriber never
received
the event notification
B.2 - ASmack used as Susbcriber
We started the Java Publisher application, and later we started the Android
application which subscribe for events. The result was that the SMACK library on
Android received XML Stanza as event notification but the ItemEventListener
registered never got the notification.
Regarding your questions "Do you have other clients succeeding at posting?", in
out
latest test we used Smack for sending events and during that test the problem
was
exactly the one that you guessed in your #1 comment. Regarding that we will try
to
repeat the Test B.2 with an org.jivesoftware.smack.PacketListener registered
(as you
suggested).
As additional point, when ASmack was used as subscriber, even if the library was
getting the notification (but the ItemEventListener was not invoked), ASmack
disconnection from the XMPP Server after a certain amount of time.
Best regards,
Stefano "Kismet" Lenzi
P.S.: You can find attach the log of either Smack and ASmack for all the tests.
Original comment by kismet...@gmail.com
on 21 Apr 2010 at 4:07
Attachments:
Hi René,
We have just tested the subscriber part with the most generic packet filter:
connection.addPacketListener(listener,new PacketTypeFilter(Message.class));
and we actually received the notification, which means that we may have missed
the
registration of some ExtensionProvider or IQProvider. Do you have any tips for
figuring out which registration we missed?
Of course, the publishing problem is still open but we will look at it after
fixing
this one -_^
Best Regards,
Stefano "Kismet" Lenzi
P.S.: I haven't attached the log this time but I can do that if you want to
Original comment by kismet...@gmail.com
on 21 Apr 2010 at 4:30
I'm doing heavy pubsubing @buddycloud, so just scan through
http://code.google.com/p/buddycloud/source/browse/trunk/client/android/main/src/
com/buddycloud/jbuddycloud/BuddycloudClient.java#45
- look for "pubsub", "event", "item"
It's an in-code translation of
https://svn.igniterealtime.org/svn/repos/smack/trunk/build/resources/META-INF/sm
ack.providers
Original comment by rtreffer@gmail.com
on 21 Apr 2010 at 4:44
Could you verify that your Smack app can publish as user1? I'm seeing just a
publish
as selene....
Original comment by rtreffer@gmail.com
on 21 Apr 2010 at 4:45
Hi again,
I hope that we are not spamming you too much -_^, in fact we are going deeper
and
deeper, and I believe that we are near to seize the problem :)
In fact, we checked if we missed the registration of any PacketExtension, and it
doesn't seem the case :S
In the following, our consideration: let's start from the message that does not
trigger the event notification:
<message
id="SeleneNode__user1@acer-sele__FfqUl"
to="user1@acer-sele"
from="pubsub.acer-sele">
<event xmlns='http://jabber.org/protocol/pubsub#event'>
<items node='SeleneNode'>
<item id='qCROUWBL09x1JP6'>
nullnullIt's time to work 21-apr-2010 18.25.02nullnull
</item>
</items>
</event>
<headers xmlns="http://jabber.org/protocol/shim">
<header>mpjTff3gc3Wec57vLt6V2VEgPYv5CUabG3L6h4Ka</header>
</headers>
</message>
As far as I understood for parsing the above message I have to register an
ExtensionProvider only for the XML element: event, items and item, am I right?
I have looked again to the list of the ExtensionProvider that our Android
application
register and we found out (among other) the following:
pm.addExtensionProvider("items",
"http://jabber.org/protocol/pubsub#event",
new org.jivesoftware.smackx.pubsub.provider.ItemsProvider());
pm.addExtensionProvider("item",
"http://jabber.org/protocol/pubsub#event",
new org.jivesoftware.smackx.pubsub.provider.ItemProvider());
pm.addExtensionProvider("event",
"http://jabber.org/protocol/pubsub#event",
new org.jivesoftware.smackx.pubsub.provider.EventProvider());
So it looks like that the parsing of the packet should complete without any
error, am
I right?
Is it possible, that, by chance, we should register parser also for the headers
and
header XML elements?
I'm looking forward for your comments -_^
Best regards,
Stefano "Kismet" Lenzi
Original comment by kismet...@gmail.com
on 21 Apr 2010 at 4:57
I think I found the problem and we may be stuck. In fact, I found out (by
comparing
the buddycloud extension registration with smack sources on the link that you
posted
in the comment #6) that Smack registers the PacketExtension for headers and
header
element of the "http://jabber.org/protocol/shim" namespace (look at line 482 of
https://svn.igniterealtime.org/svn/repos/smack/trunk/build/resources/META-INF/sm
ack.providers),
but current version of ASmack does not contain the PacketExtension implementing
the
parsing for such elements. How can we proceed?
Should I steal the code from Smack original library and try to adapt them to
android
if they are using reflection (aka Java Bean) design ? Or are you going to update
ASmack to fulfill the gap?
Waiting on you...
Stefano "Kismet" Lenzi
Original comment by kismet...@gmail.com
on 21 Apr 2010 at 5:10
I have just read the comment #7 , but I have not understood it what are you
suggested
me to do....
Stefano "Kismet" Lenzi
Original comment by kismet...@gmail.com
on 21 Apr 2010 at 5:12
Comment #7 is very simple, I see different users / resources for the smack and
asmack
test cases, and I'd like to eliminate this as a possible source.
I'll also try to push out a new release, look like I've missed some recent trunk
action. But please don't wait for that.
Missing header support sounds bad. Smack hat a horrible parser for messages
iirc.
Might kill the whole message parsing (and, as a result, kill the connection)
Original comment by rtreffer@gmail.com
on 21 Apr 2010 at 5:34
Let me say only..... IT WORKS :)
We added the missing PacketExtension for element header and headers which we
found
out are available in the current version of ASmack
Thank you for the help!
We will post the final "initialization code" that may result useful to other
people
tomorrow!
Thank you again!
Best regards,
Selene
Stefano "Kismet" Lenzi
Original comment by el3t...@gmail.com
on 21 Apr 2010 at 5:46
Ok, so I'll regard the key problems as solved. Please open a new issue if you I
can
help e.g. by syncing with trunk or alike! Oh, and feel free to add
arty@jabber.ccc.de
Regards.
Rene
Original comment by rtreffer@gmail.com
on 21 Apr 2010 at 8:00
Dear Renè,
The solution as I told you was only related to the initialization of ASmack. In
particular, we missed the registration of PacketExtension for the elements
headers
and header which are contained by the XML stanza representing the event.
Moreover, we found out that ASmack contains the PacketExtension for the elements
headers and header ( I was wrong in comment #9 when I said that "ASmack does not
contain the PacketExtension implementing the
parsing for such elements")
You can find attched the code that we used and that is working for receiving
event on
Android with ASmack ( I don't know yet if it is enough for publishing event too
because the publishing is not working yet )
I think that the code attached could result really useful to other people, and
it
would be nice if you can create a wiki page where we can start to document "How
to
use ASmack" or "FAQ for beginner"
Best regards,
Stefano "Kismet" Lenzi
P.S.: Is arty@jabber.ccc.de your jabber account?
Original comment by kismet...@gmail.com
on 22 Apr 2010 at 1:31
Attachments:
Is there any one here who has solved the issue of getting published item , as i
am using following code and i am not be able to receiver the notification of
published item for subscribers
PubSubManager mgr = new PubSubManager(cxmpp,"pubsub.example.com");
Node node = null;
try {
//get the node
node = mgr.getNode("mynode/loc");
// register listner
node.addItemEventListener(new ItemEventCoordinator());
//subscribe
node.subscribe("james@example.com");
} catch (XMPPException e) {
e.printStackTrace();
}
and the event listener for incoming published items
class ItemEventCoordinator implements ItemEventListener
{
@Override
public void handlePublishedItems(ItemPublishEvent items)
{
System.out.println("Item count: " + items.getItems().size());
System.out.println(items);
}
}
even i have tried to listen incoming packets , but i am not getting anything
not even in debug window
PacketTypeFilter filter = new PacketTypeFilter(org.jivesoftware.smack.packet.Message.class);
can anyone help me over this
Original comment by ntim...@gmail.com
on 16 Dec 2012 at 6:47
#15 You find a solution?
i can subscribe ,publish ,but i can't get the pubsub message event!
Original comment by lengxueb...@gmail.com
on 15 Nov 2013 at 6:40
you got to modify the asmack code as the current jar that you having doesnt
send notification of published item for subscribers
Original comment by ntim...@gmail.com
on 17 Nov 2013 at 10:52
Please report any problems with the *current* version of (a)Smack's pubsub code
to the igniterealtime community forums. Extra kudos if it contains the fix as a
patch. :)
Are you using the latest aSmack version?
Original comment by fschm...@gmail.com
on 18 Nov 2013 at 12:48
Original issue reported on code.google.com by
el3t...@gmail.com
on 19 Apr 2010 at 3:00Attachments: