Smack文档三:Smack: 连接管理

来源:互联网 发布:金象网络 编辑:程序博客网 时间:2024/05/08 03:05

创建一个连接

 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 connectionConnectionConfiguration config = new ConnectionConfiguration("jabber.org", 5222);config.setCompressionEnabled(true);config.setSASLAuthenticationEnabled(true);Connection connection = new XMPPConnection(config);// Connect to the serverconnection.connect();// Log into the serverconnection.login("username", "password", "SomeResource");....// Disconnect from the serverconnection.disconnect();

默认情况下,如果突然断开,Smack将尝试重新连接。可使用ConnectionConfiguration#setReconnectionAllowed(boolean)开始或者关闭此功能。重连管理器将尝试立刻重新连接,并增加连续连接失败后重新连接的延迟时间。

在重连管理器正在等待下一次重新连接时,如果你向强行重新连接,可以使用 Connection#connect()  进行一次新的尝试。如果手动尝试失败了,重连管理器将继续执行重连任务。