创建一个连接
org.jivesoftware.smack.Connection用于类管理到XMPP服务器的连接。默认的实现类是 org.jivesoftware.smack.XMPPConnection 。主要用两种构造函数。第一种是XMPPConnection(String) 使用你要连接的服务器名作为参数。将使用所有的默认连接设置:
- 将执行的DNS SRV查找,找到服务器端确切的地址和端口(通常是5222)。
- 与服务器协商最大的安全可能性可能,包括TLS加密,但是,如果需要,连接将降低到较低的安全设置。
- 将为连接使用XMPP资源名称“Smack”作为名称。
另外,你可以使用 XMPPServer(ConnectionConfiguration)构造函数来指定高级连接设置。其中的一些设置包括:
- 手动指定服务器地址和端口,而不是使用一个DNS SRV查找。
- 使用压缩连接。
- 自定义安全设置,例如为需要TLS加密的连接做标记。
- 自定义连接源名称,例如 "Work" 、"Home"。每个连接必须有一个唯一的连接源名称。例如对于用户"jsmith@example.com",加名称的完整源地址可能是 "jsmith@example.com/Smack".使用独特的资源名称,用户可以一次从多个位置或使用多个设备登录到服务器。每个连接源的优先级值将决定哪个特别的连接接收裸露地址的信息。(例子中的"jsmith@example.com" ).
连接断开
// Create the configuration for this new connection ConnectionConfiguration config = new ConnectionConfiguration("jabber.org", 5222); config.setCompressionEnabled(true); config.setSASLAuthenticationEnabled(true); Connection 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();
默认情况下,如果突然断开,Smack将尝试重新连接。可使用ConnectionConfiguration#setReconnectionAllowed(boolean)开始或者关闭此功能。重连管理器将尝试立刻重新连接,并增加连续连接失败后重新连接的延迟时间。
在重连管理器正在等待下一次重新连接时,如果你向强行重新连接,可以使用 Connection#connect() 进行一次新的尝试。如果手动尝试失败了,重连管理器将继续执行重连任务。