MqttServerTest.java 1.9 KB
Newer Older
如梦技术's avatar
如梦技术 已提交
1
package net.dreamlu.iot.mqtt.server;
如梦技术's avatar
如梦技术 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

import net.dreamlu.iot.mqtt.codec.*;
import net.dreamlu.iot.mqtt.core.server.MqttServerAioHandler;
import net.dreamlu.iot.mqtt.core.server.MqttServerAioListener;
import net.dreamlu.iot.mqtt.core.server.MqttServerProcessor;
import org.tio.core.ChannelContext;
import org.tio.core.Tio;
import org.tio.server.ServerTioConfig;
import org.tio.server.TioServer;
import org.tio.server.intf.ServerAioHandler;
import org.tio.server.intf.ServerAioListener;
import org.tio.utils.lock.SetWithLock;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;

/**
 * mqtt 服务端测试
 *
 * @author L.cm
 */
public class MqttServerTest {

	public static void main(String[] args) throws IOException {
		int socketPort = 1883;
		MqttServerProcessor brokerHandler = new MqttBrokerProcessorImpl();
		// 处理消息
		ServerAioHandler handler = new MqttServerAioHandler(brokerHandler);
		// 监听
		ServerAioListener listener = new MqttServerAioListener();
		// 配置
		ServerTioConfig config = new ServerTioConfig("mqtt-server", handler, listener);
		TioServer tioServer = new TioServer(config);
		// 设置timeout
		config.setHeartbeatTimeout(500);

		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				SetWithLock<ChannelContext> contextSet = Tio.getAll(config);
				Set<ChannelContext> channelContexts = contextSet.getObj();
				channelContexts.forEach(context -> {
					MqttPublishMessage message = (MqttPublishMessage) MqttMessageFactory.newMessage(
						new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_MOST_ONCE, false, 0),
						new MqttPublishVariableHeader("testtopic", 0), ByteBuffer.wrap("mica最牛皮".getBytes()));
					Tio.send(context, message);
				});
			}
		}, 1000, 2000);

		// 启动
57
		tioServer.start("0.0.0.0", socketPort);
如梦技术's avatar
如梦技术 已提交
58 59
	}
}