[ejabberd] Pubsub with Ejabberd and exmpp
shahzad bhatti
shahbhat at gmail.com
Fri May 7 21:14:37 MSD 2010
One more thing, here is the IQ output that is being published:
Sending : {xmlel,'jabber:client',[],iq,
[{xmlattr,undefined,type,<<"set">>},
{xmlattr,undefined,to,<<"pubsub.myhost.local">>},
{xmlattr,undefined,id,<<"pubsub-1337138231">>}],
[{xmlel,'http://jabber.org/protocol/pubsub',[],pubsub,[],
[{xmlel,'http://jabber.org/protocol/pubsub',[],publish,
[{xmlattr,undefined,node,<<"MSFT">>}],
[{xmlel,'http://jabber.org/protocol/pubsub',[],item,
[],
[{xmlcdata,
<<"{'symbol':'MSFT', 'bid':28.66,
'ask':28.67, 'bidSize':61, 'askSize':13, 'volume':65488100,
'last':28.66}">>}]}]}]}]}
I am not sure if I am missing anything on the XML.
On Fri, May 7, 2010 at 9:45 AM, shahzad bhatti <shahbhat at gmail.com> wrote:
> I wrote a simple client using exmpp library to publish JSON structure. Here
> is how I am initializing:
>
>
> init() ->
> ok = application:start(exmpp),
> ok = application:start(crypto),
> ok = application:start(ssl),
> ok = application:start(lhttpc),
> exmpp_xml:start_parser(),
> MySession = exmpp_session:start({1,0}),
> MyJID = exmpp_jid:make(?BOSH_USER, ?XMPP_SERVER, random),
> exmpp_session:auth_basic_digest(MySession, MyJID, ?BOSH_PASSWORD),
>
> {ok, _StreamId, _Features} = exmpp_session:connect_BOSH(MySession,
> ?BOSH_URL,
> ?XMPP_SERVER, []),
> session(MySession, MyJID).
>
> And here is how I am sending message (which is somewhat based on
> bosh_client in exmpp examples):
>
>
> session(MySession, MyJID) ->
> exmpp_session:login(MySession, "PLAIN")
>
> exmpp_session:send_packet(MySession,
> exmpp_presence:set_status(
> exmpp_presence:available(), "Ready to Publish ")),
> loop(MySession, MyJID).
>
>
> loop(MySession, MyJID) ->
> receive
> stop ->
> exmpp_session:stop(MySession);
> Record = #received_packet{packet_type=message, raw_packet=_Packet}
> ->
> io:format("message: ~p~n", [Record]),
> loop(MySession, MyJID)
> after 1000 ->
> Json = "{'symbol':'MSFT', 'bid':28.66, 'ask':28.67, 'bidSize':61,
> 'askSize':13, 'volume':'65488100, 'last':28.66}",
>
> IQ = exmpp_client_pubsub:publish("pubsub." ++ ?XMPP_SERVER, Symbol,
> exmpp_xml:cdata(Json)),
> _PacketId = exmpp_session:send_packet(MySession,
> exmpp_stanza:set_sender(IQ, MyJID)),
> loop(MySession, MyJID)
> end.
>
>
> However, I get following error:
>
>
> {received_packet,iq,"error",
> {undefined,<<"pubsub.myhost.local">>,undefined},
> "pubsub-2485983295",'jabber:client',
> {xmlel,'jabber:client',
> [{'jabber:client',none}],
> iq,
> [{xmlattr,undefined,from,<<"pubsub.myhost.local">>},
> {xmlattr,undefined,to,
> <<"producer at myhost.local/exmpp#1273249497148131">>},
> {xmlattr,undefined,type,<<"error">>},
> {xmlattr,undefined,id,<<"pubsub-2485983295">>}],
> [{xmlel,'http://jabber.org/protocol/pubsub',
> [{'http://jabber.org/protocol/pubsub',none}],
> pubsub,[],
> [{xmlel,'http://jabber.org/protocol/pubsub',[],publish,
> [{xmlattr,undefined,node,<<"MSFT">>}],
> [{xmlel,'http://jabber.org/protocol/pubsub',[],item,[],
> [{xmlcdata,<<"{">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"symbol">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<":">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"MSFT">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<", ">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"bid">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<":28.66, ">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"ask">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<":28.67, ">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"bidSize">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<":61, ">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"askSize">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<":13, ">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"volume">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<":">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"65488100, ">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<"last">>},
> {xmlcdata,<<"'">>},
> {xmlcdata,<<":28.66}">>}]}]}]},
> {xmlel,'jabber:client',[],error,
> [{xmlattr,undefined,code,<<"400">>},
> {xmlattr,undefined,type,<<"modify">>}],
> [{xmlel,'urn:ietf:params:xml:ns:xmpp-stanzas',
> [{'urn:ietf:params:xml:ns:xmpp-stanzas',none}],
> 'bad-request',[],[]},
> {xmlel,'http://jabber.org/protocol/pubsub#errors',
> [{'http://jabber.org/protocol/pubsub#errors',none}],
> 'invalid-payload',[],[]}]}]}}
>
>
>
>
> Can someone explain why I am getting invalid-payload/bad-request errors?
> Thanks in advance.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.jabber.ru/pipermail/ejabberd/attachments/20100507/f82f047a/attachment-0001.html>
More information about the ejabberd
mailing list