Socket
Socket
Sign inDemoInstall

@xmpp/iq

Package Overview
Dependencies
9
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @xmpp/iq

XMPP iq for JavaScript


Version published
Maintainers
1
Created

Readme

Source

iq

Info/Query, or IQ, is a "request-response" mechanism, similar in some ways to the Hypertext Transfer Protocol [HTTP]. The semantics of IQ enable an entity to make a request of, and receive a response from, another entity.

XMPP Core: IQ Semantics

Included in @xmpp/client and @xmpp/component.

Caller

Implements the caller side of iq semantics.

const {client} = require('@xmpp/client') // or component

const xmpp = client(...)
const {iqCaller} = xmpp

request

Sends an iq and returns a promise.

  • Resolves with the response when it is received.
  • Rejects with StanzaError when an error is received
  • Rejects with TimeoutError if a reply wasn't received within the specified or default timeout
  • Rejects with Error for anything else
  • The request id attribute is optional and will be added if omitted.
  • The request to attribute is optional and will default to the server.
const response = await iqCaller.request(
  xml("iq", { type: "get" }, xml("foo", "foo:bar")),
  30 * 1000, // 30 seconds timeout - default
);
const foo = response.getChild("foo", "foo:bar");
console.log(foo);

get

A convenient method to send a get request. Behaves like request but accepts/returns a child element instead of an iq.

const foo = await iqCaller.get(
  xml("foo", "foo:bar"),
  to, // "to" attribute, optional
  timeout, // 30 seconds timeout - default
);
console.log(foo);

set

A convenient method to send a set request. Behaves like request but accepts/returns a child element instead of an iq.

const foo = await iqCaller.set(
  xml("foo", "foo:bar"),
  to, // "to" attribute, optional
  timeout, // 30 seconds timeout - default
);
console.log(foo);

Callee

Implements the callee side of iq semantics.

You can think of this as http routing except there are only 2 methods; get and set and you would pass a namespace and a tag name instead of an url. The return value of the handler will be the child element of the response sent to the caller.

const {client} = require('@xmpp/client') // or component

const xmpp = client(...)
const {iqCallee} = xmpp

get

Add a get handler.

iqCallee.get("foo:bar", "foo", (ctx) => {
  return xml("foo", { xmlns: "foo:bar" });
});

set

Add a set handler.

iqCallee.set("foo:bar", "foo", (ctx) => {
  return xml("foo", { xmlns: "foo:bar" });
});

References

RFC 6120 IQ Semantics

Keywords

FAQs

Last updated on 13 Feb 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc