XMPP的Client
可以和tigase server .openfire 等主流XMPP服务器连接,
需要用到smack 包
/**
* TestXMPPClient
* @author Charles
* @email chs.garea@gmail.com
*
* */
package com.gareatech.testxmpp;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.Registration;
/**
* @param arg[0] XMPP Server
* @param arg[1] Thread Number
* @param arg[2] Debug Mode 1,
* TestXMPPClient 192.168.10.106 10 1
* */
public class TestXMPPClient {
public static void main(String[] arg) throws InterruptedException {
boolean Debug = false;
String XMPPserver = "192.168.10.106";
int number = 0;
switch (arg.length)
{
case 2:
XMPPserver = arg[0];
number = Integer.parseInt(arg[1]);
break;
case 3:
XMPPserver = arg[0];
number = Integer.parseInt(arg[1]);
if(arg[2].equals("1"))
Debug = true;
break;
default:
System.out.println("Wrong Paramenters");
return;
}
System.out.println("server:"+XMPPserver+"\nnumber:"+number+"\nDebug:"+Debug);
for( int i = 0; i<number; i++)
{
new MitiSay(i+"",XMPPserver,Debug).start();
Thread.sleep(1000);
}
}
}
/**
* 线程
*
* */
class MitiSay extends Thread {
private String XMPPServer;
private boolean DebugFlag ;
public MitiSay(String threadName) {
super(threadName);
this.XMPPServer = "192.168.10.106";
this.DebugFlag = false;
}
public MitiSay(String threadName,String XMPPserver) {
super(threadName);
this.XMPPServer = XMPPserver;
this.DebugFlag = false;
}
public MitiSay(String threadName,String XMPPserver,boolean DebugFlag) {
super(threadName);
this.XMPPServer = XMPPserver;
this.DebugFlag = DebugFlag;
}
public void run() {
System.out.println("线程"+getName() + " 开始!");
XMPPConnection.DEBUG_ENABLED = DebugFlag;
ConnectionConfiguration connectionConfig = new ConnectionConfiguration("192.168.10.106", 5222, "pc-201012031249");
connectionConfig.setSecurityMode(SecurityMode.required);
connectionConfig.setSASLAuthenticationEnabled(false);
connectionConfig.setCompressionEnabled(false);
//connectionConfig.setSelfSignedCertificateEnabled(true);
try {
/** Connection **/
XMPPConnection connection = new XMPPConnection(connectionConfig);
PacketFilter packetFilter = new AndFilter();
PacketListener packetListener = new PacketListener() {
@Override
public void processPacket(Packet packet) {
// TODO Auto-generated method stub
System.out.println("Thread"+getName()+"Get Message:"+packet.toXML());
if (packet instanceof IQ) {
IQ response = (IQ) packet;
if (response.getType() == IQ.Type.ERROR) {
if (!response.getError().toString().contains("409")) {
}
} else if (response.getType() == IQ.Type.RESULT) {
}
}
}
};
connection.addPacketListener(packetListener, packetFilter);
connection.connect();
System.out.println("connect! Next-> Register!");
/** Registration **/
final String newUsername = newRandomUUID();
final String newPassword = newRandomUUID();
Registration registration = new Registration();
registration.setType(IQ.Type.SET);
registration.setTo(XMPPServer);
Map paramenter = new HashMap();
paramenter.put("username", newUsername);
paramenter.put("password", newPassword);
paramenter.put("name", "new");
paramenter.put("email", "mail@mail.com");
registration.setAttributes(paramenter);
connection.sendPacket(registration);
System.out.println("registration! Next -> Login");
/** login **/
//connection.login("admin", "tigase");
connection.login(newUsername, newPassword);
System.out.println("Logged!!"+newUsername+"\n"+newPassword);
while (true)
{
Thread.sleep(500000000);
}
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(getName() + " 线程运行结束!");
}
/**
*
* newRandomUUID: 获取一随机数
*/
private static String newRandomUUID() {
String uuidRaw = UUID.randomUUID().toString();
return uuidRaw.replaceAll("-", "");
}
}
分享到:
相关推荐
`django-xmpp-server-test` 是一个基于Python的Django框架构建的项目,主要用于测试XMPP(Extensible Messaging and Presence Protocol)服务器的功能。XMPP是一种开放标准的即时通讯协议,它允许用户进行实时、双向...
message.setBody("Hello, this is a test message!"); connection.sendPacket(message); connection.addPacketListener(new PacketListener() { @Override public void processPacket(Packet packet) { if ...
节点-xmpp-服务器惯用 XMPP 服务器库手动的有关如何使用node-xmpp-server说明,请参阅 。安装注意:我们现在只支持 nodejs 0.8.0 及更高版本。 使用包管理器 : npm install node-xmpp-server测试安装开发依赖项,...
在本文中,我们将深入探讨如何使用Strophe库与XMPP(Extensible Messaging and Presence Protocol)协议相结合,构建一个Web即时聊天工具。Strophe是一个轻量级的JavaScript库,专门用于处理XMPP协议,使得在Web应用...
3. **Tigase Server安装**:Tigase提供了多种安装方式,包括Windows下的EXE安装包、JAR文件以及Linux下的压缩包。用户可以根据自己的操作系统选择合适的安装方式。 - **EXE安装**:适用于Windows环境,安装过程...
message.setBody("Hello, this is a test message!"); connection.sendPacket(message); ``` 对于消息接收,你需要实现`PacketListener`接口,并注册到连接上。当有新的消息到达时,`processPacket`方法会被调用。 ...
4. **Jitsi Xmpp Server**:Jitsi服务通常与XMPP服务器(如Prosody)集成,用于处理用户的认证和房间管理。 5. **WebRTC**:Jitsi是建立在WebRTC技术上的,这是一种让浏览器之间可以直接进行音视频通信的技术,无需...
var conn = new Strophe.Connection("xmpp://yourserver.com:5280/xmpp"); conn.connect(username, password, onConnect); ``` 2. **连接事件处理**:定义`onConnect`函数来处理连接成功、失败或断开的事件,如...
message.setBody("Hello, this is a test message!"); connection.sendPacket(message); ``` 5. **处理事件**:为了监听收到的消息,可以注册一个`PacketListener`。这允许你实现实时的交互,如聊天室的加入、离线...
ember test --server 建造 ember build (发展) ember build --environment production (生产) 部署中 指定部署您的应用所需的时间。 进一步阅读/有用的链接 ember.js 余烬 开发浏览器扩展 Chrome的余烬检查
message.setBody("Hello, this is a test message!"); ChatManager chatManager = ChatManager.getInstanceFor(connection); Chat chat = chatManager.chatWith("recipient@your.ejabberd.server.com"); chat....
启动服务器: buster server 默认情况下,测试服务器在 打开您要在其中运行测试的浏览器,然后单击捕获按钮。 运行测试: buster test 要构建文档,您需要拥有yuidoc。 您可以使用yuidoc命令在存储库的根目录中...
message.setBody("Hello, this is a test message!"); connection.sendStanza(message); ``` 5. **处理事件**:为了接收消息或处理其他事件,可以注册监听器。例如,`PacketListener`可以用来监听接收到的消息。...
.setHost("your.openfire.server") .setPort(5222) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) // 根据服务器配置调整 .setUsernameAndPassword("username", "password") .build(); ...
iot_push基于netty + mqtt 3.1.1协议开发的物联网消息推送框架(此项目不维护了)请参考新项目( )项目目录...##服务端示例(iot_push_server_starter_test)已实现:发布订阅功能遗言通知会话session数据发布保留消息
ActiveMQ是Apache软件基金会开发的一个开源项目,它遵循开放消息中间件(Open Message Middleware,OMM)标准,支持多种协议,如OpenWire、AMQP、STOMP、XMPP、MQTT等。ActiveMQ的核心功能包括消息队列、发布/订阅...
.setHost("your.xmpp.server") .setPort(5222) .setUsernameAndPassword("username", "password") .build(); XMPPTCPConnection connection = new XMPPTCPConnection(config); connection.connect(); ``` **4. ...
Openfire 是一个基于 XMPP 协议的即时通信服务器,可以实现实时的聊天服务。在本文中,我们将详细介绍 Openfire 的安装和配置过程,并探讨如何使用 Eclipse 进行插件开发。 一、Openfire 的安装和配置 Openfire 的...
Smack是一个强大的开源Java库,专门用于处理XMPP(Extensible Messaging and Presence Protocol)协议,而Openfire是基于XMPP的服务器,用于实现实时通信。Android作为全球最流行的移动操作系统,提供了丰富的开发...
- **Openfire**:是一款开源的即时通讯服务器软件,基于XMPP协议,支持文本消息、语音视频聊天、文件传输等功能。 - **适用场景**:企业内部沟通、在线客服系统、社交应用等。 #### 二、环境搭建所需组件 根据提供...