提示:DDpush笔记
前言
DDPush的出发点,是绕过已有的各种门槛和障碍,寻求另外一种简单有效的方法,来尝试折衷地实现移动互联网、物联网时代IM和信息推送需求。DDPush的目的是帮助中小型应用和个人开发者,较容易地跨过IM和推送系统的基本门槛,而不是挑战和取代已有的业界标准和产品。DDPush,任意门推送服务器,只是另外一道门,也许能打开另外一个世界,但绝不是包含整个世界。
DDPush的思路,有点类似MQTT,重新定义了一套较简单和低级的网络通讯协议,来达到更小的流量、更高的效率、以及更好的通用性。而DDPush和MQTT的区别在于,DDPush更为简单,放弃了QoS,只实现极为简单的实时通讯需求,剩下的更多是交由应用层去控制。另外,DDPush实现并主推UDP方式,大为降低网络通信成本和服务器承载成本,提高了容量和效率。
一、DDpush下载
下载地址:git
jar启动:start即可
源码启动:IMserver启动即可
二、项目使用步骤
1.引入库
依赖ddpush包:
mvn deploy:deploy-file -DrepositoryId=nexus-releases -DgroupId=org.ddpush -DartifactId=ddpush -Dversion=1.0.03 -Dpackaging=jar -Dfile=ddpush-1.0.03.jar -Durl=http://***/nexus/content/repositories/releases/
添加依赖
<dependency>
<groupId>org.ddpush</groupId>
<artifactId>ddpush</artifactId>
<version>1.0.03</version>
</dependency>
2.Java发送接收客户端
发送端示例:
import org.ddpush.im.util.StringUtil;
import org.ddpush.im.v1.client.appserver.Pusher;
public class DDpushClient {
public static void main(String[] args) throws Exception {
Pusher pusher = null;
try {
//三个参数分别对应:DDPush服务器IP,DDPush默认推送端口,响应超时
pusher = new Pusher("127.0.0.1", 9999, 5000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pusher.push0x20Message(StringUtil.md5Byte("user2"), "你是谁1".getBytes("UTF-8"));
}
}
接收端示例
import org.ddpush.im.v1.client.appuser.Message;
import org.ddpush.im.v1.client.appuser.TCPClientBase;
import java.io.UnsupportedEncodingException;
public class MyTCPClient extends TCPClientBase {
public MyTCPClient(byte[] uuid) throws Exception {
//uuid, appid, DDPush服务器IP,DDPush默认接收消息的端口,响应超时
super(uuid, 1, "127.0.0.1", 9966, 5);
}
@Override
public boolean hasNetworkConnection() {
// TODO Auto-generated method stub
return true;
}
@Override
public void onPushMessage(Message msg) {
// TODO Auto-generated method stub
if (msg == null) {
System.out.println("msg is null");
return;
}
if (msg.getData() == null || msg.getData().length == 0) {
System.out.println("msg has no data");
return;
}
String str = null;
try {
str = new String(msg.getData(),5,msg.getContentLength(), "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
str = "Exception";
}
System.out.println(str);
}
@Override
public void trySystemSleep() {
// TODO Auto-generated method stub
}
}
import org.ddpush.im.util.StringUtil;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) throws Exception {
try {
ArrayList list = new ArrayList();
for (int i = 0; i < 3; i++) {
byte[] uuid = StringUtil.md5Byte("user" + i);
//System.out.println("uuid is: "+StringUtil.convert(uuid));
MyTCPClient myTcpClient = new MyTCPClient(uuid);
myTcpClient.setHeartbeatInterval(50);
myTcpClient.start();
//Thread.sleep(1000);
list.add(myTcpClient);
}
synchronized (list) {
list.wait();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
总结
简单、快捷 方便的实现IM