DDpush搭建学习笔记

提示:DDpush笔记

文章目录

  • 前言
  • 一、DDpush下载
  • 二、项目使用步骤
    • 1.引入库
    • 2.Java发送接收客户端
  • 总结


前言

DDPush的出发点,是绕过已有的各种门槛和障碍,寻求另外一种简单有效的方法,来尝试折衷地实现移动互联网、物联网时代IM和信息推送需求。DDPush的目的是帮助中小型应用和个人开发者,较容易地跨过IM和推送系统的基本门槛,而不是挑战和取代已有的业界标准和产品。DDPush,任意门推送服务器,只是另外一道门,也许能打开另外一个世界,但绝不是包含整个世界。

DDPush的思路,有点类似MQTT,重新定义了一套较简单和低级的网络通讯协议,来达到更小的流量、更高的效率、以及更好的通用性。而DDPush和MQTT的区别在于,DDPush更为简单,放弃了QoS,只实现极为简单的实时通讯需求,剩下的更多是交由应用层去控制。另外,DDPush实现并主推UDP方式,大为降低网络通信成本和服务器承载成本,提高了容量和效率。


一、DDpush下载

下载地址:git
jar启动:start即可
DDpush搭建学习笔记_第1张图片
源码启动:IMserver启动即可
DDpush搭建学习笔记_第2张图片
DDpush搭建学习笔记_第3张图片

二、项目使用步骤

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/

DDpush搭建学习笔记_第4张图片
添加依赖

        <dependency>
            <groupId>org.ddpushgroupId>
            <artifactId>ddpushartifactId>
            <version>1.0.03version>
        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

你可能感兴趣的:(java)