Smack: Connection Management

Creating a Connection

The org.jivesoftware.smack.XMPPConnection class manages your connection to an XMPP server. Two constructors are available. The first, XMPPConnection(String) takes the server name you'd like to connect to as an argument. All default connection settings will be used:

  • A DNS SRV lookup will be performed to find the exact address and port (typically 5222) that the server resides at.
  • The maximum security possible will be negotiated with the server, including TLS encryption, but the connection will fall back to lower security settings if necessary.
  • The XMPP resource name "Smack" will be used for the connection.

Alternatively, you can use the XMPPServer(ConnectionConfiguration) constructor to specify advanced connection settings. Some of these settings include:

  • Manually specify the server address and port of the server rather than using a DNS SRV lookup.
  • Enable connection compression.
  • Customize security settings, such as flagging the connection to require TLS encryption in order to connect.
  • Specify a custom connection resource name such as "Work" or "Home". Every connection by a user to a server must have a unique resource name. For the user "jsmith@example.com", the full address with resource might be "jsmith@example.com/Smack". With unique resource names, a user can be logged into the server from multiple locations at once, or using multiple devices. The presence priority value used with each resource will determine which particular connection receives messages to the bare address ("jsmith@example.com" in our example).

 

Connect and Disconnect

// Create the configuration for this new connection
ConnectionConfiguration config = new ConnectionConfiguration("jabber.org", 5222);
config.setCompressionEnabled(true);
config.setSASLAuthenticationEnabled(true);

XMPPConnection connection = new XMPPConnection(config);
// Connect to the server
connection.connect();
// Log into the server
connection.login("username", "password", "SomeResource");
....
// Disconnect from the server
connection.disconnect();

By default Smack will try to reconnect the connection in case it was abruptly disconnected. Use ConnectionConfiguration#setReconnectionAllowed(boolean) to turn on/off this feature. The reconnection manager will try to immediately reconnect to the server and increase the delay between attempts as successive reconnections keep failing.
In case you want to force a reconnection while the reconnetion manager is waiting for the next reconnection, you can just use XMPPConnection#connect() and a new attempt will be made. If the manual attempt also failed then the reconnection manager will still continue the reconnection job.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值