在 UniApp 中连接 Openfire 实现即时通讯,主要通过 WebSocket 协议与 Openfire 服务器通信。以下是关键步骤和示例代码:
1. 环境准备
- 确保 Openfire 服务器已部署并开启 WebSocket 支持(默认端口 7070)。
 
- 在 UniApp 项目中安装 Strophe.js 库(用于 XMPP 协议处理)。
 
2. 核心代码示例
import Strophe from 'strophe.js';
// 配置 Openfire 服务器信息
const server = 'your-openfire-server.com';
const port = 7070;
const endpoint = '/ws';
// 初始化 XMPP 客户端
const client = new Strophe.Connection(`wss://${server}:${port}${endpoint}`);
// 连接参数
const jid = 'username@your-domain.com'; // 用户 JID
const password = 'your-password';
// 建立连接
client.connect(jid, password, (status) => {
  if (status === Strophe.Status.CONNECTED) {
    console.log('连接成功');
    // 发送初始出席状态
    client.send($pres().tree());
  } else if (status === Strophe.Status.DISCONNECTED) {
    console.log('连接断开');
  }
});
// 消息发送函数
function sendMessage(to, message) {
  const msg = $msg({
    to: to,
    type: 'chat'
  }).c('body').t(message);
  client.send(msg.tree());
}
// 消息接收处理
client.addHandler((msg) => {
  const from = msg.getAttribute('from');
  const body = msg.querySelector('body').textContent;
  console.log(`收到来自 ${from} 的消息: ${body}`);
  return true;
}, null, 'message', 'chat');
3. 注意事项
- 跨域问题:确保 Openfire 配置允许 WebSocket 跨域请求。
 
- SSL 证书:生产环境建议使用 WSS(WebSocket Secure)。
 
- 心跳维护:定期发送空消息保持连接活跃。
 
- 重连机制:网络异常时实现自动重连。
 
4. 功能扩展
- 添加好友管理、群组聊天等功能需遵循 XMPP 协议规范
 
- 可结合 UniApp 的全局数据管理(如 Vuex)维护会话状态
 
建议参考 Openfire 官方文档调整服务器配置,并使用 Strophe.js 文档处理更复杂的 XMPP 交互场景。