public interface XMPPConnection
XMPPTCPConnection
or XMPPBOSHConnection
). To create a connection to a XMPP server
a simple usage of this API might look like the following:
// Create a connection to the igniterealtime.org XMPP server. XMPPConnection con = new XMPPTCPConnection("igniterealtime.org"); // Connect to the server con.connect(); // Most servers require you to login before performing other tasks. con.login("jsmith", "mypass"); // Start a new conversation with John Doe and send him a message. Chat chat = ChatManager.getInstanceFor(con).createChat("[email protected]", new MessageListener() { public void processMessage(Chat chat, Message message) { // Print out any messages we get back to standard out. System.out.println("Received message: " + message); } }); chat.sendMessage("Howdy!"); // Disconnect from the server con.disconnect();
Connections can be reused between connections. This means that an Connection may be connected, disconnected and then connected again. Listeners of the Connection will be retained across connections.
Modifier and Type | Interface and Description |
---|---|
static class |
XMPPConnection.FromMode |
Modifier and Type | Method and Description |
---|---|
void |
addConnectionListener(ConnectionListener connectionListener)
Adds a connection listener to this connection that will be notified when
the connection closes or fails.
|
void |
addPacketInterceptor(PacketListener packetInterceptor,
PacketFilter packetFilter)
Registers a packet interceptor with this connection.
|
void |
addPacketListener(PacketListener packetListener,
PacketFilter packetFilter)
Registers a packet listener with this connection.
|
void |
addPacketSendingListener(PacketListener packetListener,
PacketFilter packetFilter)
Registers a packet listener with this connection.
|
PacketCollector |
createPacketCollector(PacketFilter packetFilter)
Creates a new packet collector for this connection.
|
PacketCollector |
createPacketCollectorAndSend(IQ packet)
Creates a new packet collector collecting packets that are replies to
packet . |
PacketCollector |
createPacketCollectorAndSend(PacketFilter packetFilter,
Packet packet)
Creates a new packet collector for this connection.
|
int |
getConnectionCounter()
Get the connection counter of this XMPPConnection instance.
|
java.lang.String |
getConnectionID()
Returns the connection ID for this connection, which is the value set by the server
when opening a XMPP stream.
|
<F extends PacketExtension> |
getFeature(java.lang.String element,
java.lang.String namespace)
Get the feature packet extensions for a given stream feature of the
server, or
null if the server doesn't support that feature. |
XMPPConnection.FromMode |
getFromMode()
Get the currently active FromMode.
|
java.lang.String |
getHost()
Returns the host name of the server where the XMPP server is running.
|
long |
getLastStanzaReceived()
Returns the timestamp in milliseconds when the last stanza was received.
|
long |
getPacketReplyTimeout()
Returns the current value of the reply timeout in milliseconds for request for this
XMPPConnection instance.
|
int |
getPort()
Returns the port number of the XMPP server for this connection.
|
Roster |
getRoster()
Returns the roster for the user.
|
RosterStore |
getRosterStore()
Get the permanent roster store.
|
java.lang.String |
getServiceName()
Returns the name of the service provided by the XMPP server for this connection.
|
java.lang.String |
getUser()
Returns the full XMPP address of the user that is logged in to the connection or
null if not logged in yet.
|
boolean |
hasFeature(java.lang.String element,
java.lang.String namespace)
Return true if the server supports the given stream feature.
|
boolean |
isAnonymous()
Returns true if currently authenticated anonymously.
|
boolean |
isAuthenticated()
Returns true if currently authenticated by successfully calling the login method.
|
boolean |
isConnected()
Returns true if currently connected to the XMPP server.
|
boolean |
isRosterLoadedAtLogin()
Returns true if the roster will be loaded from the server when logging in.
|
boolean |
isSecureConnection()
Returns true if the connection to the server has successfully negotiated encryption.
|
boolean |
isUsingCompression()
Returns true if network traffic is being compressed.
|
void |
removeConnectionListener(ConnectionListener connectionListener)
Removes a connection listener from this connection.
|
void |
removePacketCollector(PacketCollector collector)
Remove a packet collector of this connection.
|
void |
removePacketInterceptor(PacketListener packetInterceptor)
Removes a packet interceptor.
|
boolean |
removePacketListener(PacketListener packetListener)
Removes a packet listener for received packets from this connection.
|
void |
removePacketSendingListener(PacketListener packetListener)
Removes a packet listener for sending packets from this connection.
|
void |
send(PlainStreamElement element)
Send a PlainStreamElement.
|
void |
sendIqWithResponseCallback(IQ iqRequest,
PacketListener callback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
PacketListener callback,
ExceptionCallback exceptionCallback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
PacketListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendPacket(Packet packet)
Sends the specified packet to the server.
|
void |
sendStanzaWithResponseCallback(Packet stanza,
PacketFilter replyFilter,
PacketListener callback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Packet stanza,
PacketFilter replyFilter,
PacketListener callback,
ExceptionCallback exceptionCallback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Packet stanza,
PacketFilter replyFilter,
PacketListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
setFromMode(XMPPConnection.FromMode fromMode)
Set the FromMode for this connection instance.
|
void |
setPacketReplyTimeout(long timeout)
Set the packet reply timeout in milliseconds.
|
java.lang.String getServiceName()
java.lang.String getHost()
int getPort()
java.lang.String getUser()
java.lang.String getConnectionID()
boolean isConnected()
boolean isAuthenticated()
boolean isAnonymous()
boolean isSecureConnection()
boolean isUsingCompression()
void sendPacket(Packet packet) throws SmackException.NotConnectedException
packet
- the packet to send.SmackException.NotConnectedException
void send(PlainStreamElement element) throws SmackException.NotConnectedException
This method is not meant for end-user usage! It allows sending plain stream elements, which should not be done by a user manually. Doing so may result in a unstable or unusable connection. Certain Smack APIs use this method to send plain stream elements.
element
- SmackException.NotConnectedException
Roster getRoster()
This method will never return null
, instead if the user has not yet logged into
the server or is logged in anonymously all modifying methods of the returned roster object
like Roster.createEntry(String, String, String[])
,
Roster.removeEntry(RosterEntry)
, etc. except adding or removing
RosterListener
s will throw an IllegalStateException.
java.lang.IllegalStateException
- if the connection is anonymousvoid addConnectionListener(ConnectionListener connectionListener)
connectionListener
- a connection listener.void removeConnectionListener(ConnectionListener connectionListener)
connectionListener
- a connection listener.PacketCollector createPacketCollectorAndSend(IQ packet) throws SmackException.NotConnectedException
packet
.
Does also send packet
. The packet filter for the collector is an
IQReplyFilter
, guaranteeing that packet id and JID in the 'from' address have
expected values.packet
- the packet to filter responses fromSmackException.NotConnectedException
PacketCollector createPacketCollectorAndSend(PacketFilter packetFilter, Packet packet) throws SmackException.NotConnectedException
PacketListener
when you need to wait for
a specific result.packetFilter
- the packet filter to use.packet
- the packet to send right after the collector got createdSmackException.NotConnectedException
PacketCollector createPacketCollector(PacketFilter packetFilter)
PacketListener
when you need to wait for a specific result.
Note: If you send a Packet right after using this method, then
consider using
createPacketCollectorAndSend(PacketFilter, Packet)
instead.
Otherwise make sure cancel the PacketCollector in every case, e.g. even
if an exception is thrown, or otherwise you may leak the PacketCollector.
packetFilter
- the packet filter to use.void removePacketCollector(PacketCollector collector)
collector
- a packet collectors which was created for this connection.void addPacketListener(PacketListener packetListener, PacketFilter packetFilter)
addPacketInterceptor(PacketListener, PacketFilter)
.packetListener
- the packet listener to notify of new received packets.packetFilter
- the packet filter to use.boolean removePacketListener(PacketListener packetListener)
packetListener
- the packet listener to remove.void addPacketSendingListener(PacketListener packetListener, PacketFilter packetFilter)
packetListener
- the packet listener to notify of sent packets.packetFilter
- the packet filter to use.void removePacketSendingListener(PacketListener packetListener)
packetListener
- the packet listener to remove.void addPacketInterceptor(PacketListener packetInterceptor, PacketFilter packetFilter)
NOTE: For a similar functionality on incoming packets, see addPacketListener(PacketListener, PacketFilter)
.
packetInterceptor
- the packet interceptor to notify of packets about to be sent.packetFilter
- the packet filter to use.void removePacketInterceptor(PacketListener packetInterceptor)
packetInterceptor
- the packet interceptor to remove.long getPacketReplyTimeout()
void setPacketReplyTimeout(long timeout)
SmackException.NoResponseException
if no reply to a request was received within the timeout period.timeout
- the packet reply timeout in millisecondsint getConnectionCounter()
void setFromMode(XMPPConnection.FromMode fromMode)
fromMode
- XMPPConnection.FromMode getFromMode()
XMPPConnection.FromMode
RosterStore getRosterStore()
boolean isRosterLoadedAtLogin()
<F extends PacketExtension> F getFeature(java.lang.String element, java.lang.String namespace)
null
if the server doesn't support that feature.element
- namespace
- null
boolean hasFeature(java.lang.String element, java.lang.String namespace)
element
- namespace
- void sendStanzaWithResponseCallback(Packet stanza, PacketFilter replyFilter, PacketListener callback) throws SmackException.NotConnectedException
replyFilter
.
If there is a response, then callback
will be invoked. The callback will be
invoked at most once and it will be not invoked after the connections default reply timeout
has been elapsed.
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)SmackException.NotConnectedException
void sendStanzaWithResponseCallback(Packet stanza, PacketFilter replyFilter, PacketListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after the connections default reply timeout, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)SmackException.NotConnectedException
void sendStanzaWithResponseCallback(Packet stanza, PacketFilter replyFilter, PacketListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after timeout
milliseconds, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)timeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback) throws SmackException.NotConnectedException
callback
if there is a result of
IQ.Type.result
with that result IQ. The callback will
not be invoked after the connections default reply timeout has been elapsed.iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)SmackException.NotConnectedException
void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after the
connections default reply timeout, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionalSmackException.NotConnectedException
void sendIqWithResponseCallback(IQ iqRequest, PacketListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after
timeout
, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionaltimeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
long getLastStanzaReceived()