diff --git a/conf/reference.conf b/conf/reference.conf index 90c0bfb6..143dd418 100644 --- a/conf/reference.conf +++ b/conf/reference.conf @@ -61,7 +61,7 @@ mp { gateway-client-num=1 //网关客户端连接数 admin-server-port=3002 //控制台服务端口, 内部端口 - ws-server-port=0 //websocket对外端口, 公网端口, 0表示禁用websocket + ws-server-port=8008 //websocket对外端口, 公网端口, 0表示禁用websocket ws-path="/" //websocket path public-host-mapping { //本机局域网IP和公网IP的映射关系, 该配置后续会被废弃 diff --git a/mpush-boot/src/main/java/com/mpush/bootstrap/Main.java b/mpush-boot/src/main/java/com/mpush/bootstrap/Main.java index b85c0a20..ee612314 100644 --- a/mpush-boot/src/main/java/com/mpush/bootstrap/Main.java +++ b/mpush-boot/src/main/java/com/mpush/bootstrap/Main.java @@ -32,7 +32,7 @@ public static void main(String[] args) { Logs.init(); Logs.Console.info("launch mpush server..."); ServerLauncher launcher = new ServerLauncher(); - launcher.init(); +// launcher.init(); launcher.start(); addHook(launcher); } diff --git a/mpush-boot/src/main/java/com/mpush/bootstrap/ServerLauncher.java b/mpush-boot/src/main/java/com/mpush/bootstrap/ServerLauncher.java index 4d8476cf..39db2fc5 100644 --- a/mpush-boot/src/main/java/com/mpush/bootstrap/ServerLauncher.java +++ b/mpush-boot/src/main/java/com/mpush/bootstrap/ServerLauncher.java @@ -71,6 +71,7 @@ public void init() { } public void start() { + init(); chain.start(); } diff --git a/mpush-boot/src/main/resources/mpush.conf b/mpush-boot/src/main/resources/mpush.conf index 9debe252..8f9430e2 100644 --- a/mpush-boot/src/main/resources/mpush.conf +++ b/mpush-boot/src/main/resources/mpush.conf @@ -9,7 +9,8 @@ mp.redis { //redis 集群配置 } mp.net.local-ip="" //本地ip, 默认取第一个网卡的本地IP mp.net.public-ip="" //外网ip, 默认取第一个网卡的外网IP -mp.net.ws-server-port=0 //websocket对外端口, 0表示禁用websocket +mp.net.ws-server-port=8008 //websocket对外端口, 0表示禁用websocket +mp.net.ws-path="/client/ws" mp.net.gateway-server-net=tcp // 网关服务使用的网络 udp/tcp mp.net.connect-server-port=3000 //接入服务的端口号 -mp.http.proxy-enabled=true //启用Http代理功能 +mp.http.proxy-enabled=false //启用Http代理功能 diff --git a/mpush-client/src/main/java/com/mpush/client/ClientExecutorFactory.java b/mpush-client/src/main/java/com/mpush/client/ClientExecutorFactory.java index de4b8c88..b16e8b9e 100644 --- a/mpush-client/src/main/java/com/mpush/client/ClientExecutorFactory.java +++ b/mpush-client/src/main/java/com/mpush/client/ClientExecutorFactory.java @@ -35,7 +35,7 @@ /** * 此线程池可伸缩,线程空闲一定时间后回收,新请求重新创建线程 */ -@Spi(order = 1) +@Spi(order = 2) public final class ClientExecutorFactory extends CommonExecutorFactory { @Override diff --git a/mpush-client/src/main/java/com/mpush/client/MPushClient.java b/mpush-client/src/main/java/com/mpush/client/MPushClient.java index ab74cfee..13e0e9d9 100644 --- a/mpush-client/src/main/java/com/mpush/client/MPushClient.java +++ b/mpush-client/src/main/java/com/mpush/client/MPushClient.java @@ -48,6 +48,7 @@ public final class MPushClient implements MPushContext { public MPushClient() { monitorService = new MonitorService(); + //本项目部署在mpns里,避免eventbus初始化两次,故注释掉如下代码。如要独立部署敬请放开一下代码 EventBus.create(monitorService.getThreadPoolManager().getEventBusExecutor()); pushRequestBus = new PushRequestBus(this); diff --git a/mpush-core/src/main/java/com/mpush/core/handler/AdminHandler.java b/mpush-core/src/main/java/com/mpush/core/handler/AdminHandler.java index 911f46f6..9b08fda2 100644 --- a/mpush-core/src/main/java/com/mpush/core/handler/AdminHandler.java +++ b/mpush-core/src/main/java/com/mpush/core/handler/AdminHandler.java @@ -56,6 +56,7 @@ public final class AdminHandler extends SimpleChannelInboundHandler { public AdminHandler(MPushServer mPushServer) { this.mPushServer = mPushServer; + init(); } public void init() { diff --git a/mpush-core/src/main/java/com/mpush/core/router/RouterCenter.java b/mpush-core/src/main/java/com/mpush/core/router/RouterCenter.java index 48f89212..7b9e50d1 100644 --- a/mpush-core/src/main/java/com/mpush/core/router/RouterCenter.java +++ b/mpush-core/src/main/java/com/mpush/core/router/RouterCenter.java @@ -52,10 +52,18 @@ public RouterCenter(MPushServer mPushServer) { @Override protected void doStart(Listener listener) throws Throwable { - localRouterManager = new LocalRouterManager(); - remoteRouterManager = new RemoteRouterManager(); - routerChangeListener = new RouterChangeListener(mPushServer); - userEventConsumer = new UserEventConsumer(remoteRouterManager); + if (localRouterManager == null){ + localRouterManager = new LocalRouterManager(); + } + if (remoteRouterManager == null){ + remoteRouterManager = new RemoteRouterManager(); + } + if (routerChangeListener == null){ + routerChangeListener = new RouterChangeListener(mPushServer); + } + if (userEventConsumer == null){ + userEventConsumer = new UserEventConsumer(remoteRouterManager); + } userEventConsumer.getUserManager().clearUserOnlineData(); super.doStart(listener); } diff --git a/mpush-core/src/main/java/com/mpush/core/server/WebsocketServer.java b/mpush-core/src/main/java/com/mpush/core/server/WebsocketServer.java index b58acde2..c0f0e772 100644 --- a/mpush-core/src/main/java/com/mpush/core/server/WebsocketServer.java +++ b/mpush-core/src/main/java/com/mpush/core/server/WebsocketServer.java @@ -28,6 +28,7 @@ import com.mpush.core.handler.AckHandler; import com.mpush.core.handler.BindUserHandler; import com.mpush.core.handler.HandshakeHandler; +import com.mpush.core.handler.HeartBeatHandler; import com.mpush.netty.server.NettyTCPServer; import com.mpush.tools.config.CC; import io.netty.bootstrap.ServerBootstrap; @@ -67,6 +68,7 @@ public WebsocketServer(MPushServer mPushServer) { public void init() { super.init(); connectionManager.init(); + messageDispatcher.register(Command.HEARTBEAT, HeartBeatHandler::new); messageDispatcher.register(Command.HANDSHAKE, () -> new HandshakeHandler(mPushServer)); messageDispatcher.register(Command.BIND, () -> new BindUserHandler(mPushServer)); messageDispatcher.register(Command.UNBIND, () -> new BindUserHandler(mPushServer)); diff --git a/mpush-test/src/main/java/com/mpush/test/push/PushClientTestMain.java b/mpush-test/src/main/java/com/mpush/test/push/PushClientTestMain.java index 1c021db2..645b868c 100644 --- a/mpush-test/src/main/java/com/mpush/test/push/PushClientTestMain.java +++ b/mpush-test/src/main/java/com/mpush/test/push/PushClientTestMain.java @@ -54,7 +54,7 @@ public void testPush() throws Exception { PushContext context = PushContext.build(msg) .setAckModel(AckModel.AUTO_ACK) - .setUserId("user-" + i) + .setUserId("20") .setBroadcast(false) //.setTags(Sets.newHashSet("test")) //.setCondition("tags&&tags.indexOf('test')!=-1") diff --git a/mpush-test/src/main/resources/application.conf b/mpush-test/src/main/resources/application.conf index fe0f38e9..5c7f256f 100644 --- a/mpush-test/src/main/resources/application.conf +++ b/mpush-test/src/main/resources/application.conf @@ -8,7 +8,7 @@ mp.zk.server-address="127.0.0.1:2181" mp.redis {// redis 集群配置 nodes:["127.0.0.1:6379"]//格式是ip:port,密码可以没有ip:port } -mp.http.proxy-enabled=true +mp.http.proxy-enabled=false mp.net { gateway-server-net=tcp //网关服务使用的网络类型tcp/udp @@ -17,4 +17,5 @@ mp.net { gateway-client-port=4000 //UDP客户端端口, 内部端口 admin-server-port=3002 //控制台服务端口, 内部端口 ws-server-port=8008 //websocket对外端口, 0表示禁用websocket + ws-path=/client/ws } diff --git a/mpush-tools/src/main/java/com/mpush/tools/event/EventBus.java b/mpush-tools/src/main/java/com/mpush/tools/event/EventBus.java index 16557732..31aec127 100644 --- a/mpush-tools/src/main/java/com/mpush/tools/event/EventBus.java +++ b/mpush-tools/src/main/java/com/mpush/tools/event/EventBus.java @@ -36,8 +36,10 @@ public class EventBus { private static com.google.common.eventbus.EventBus eventBus; public static void create(Executor executor) { - eventBus = new AsyncEventBus(executor, (exception, context) - -> LOGGER.error("event bus subscriber ex", exception)); + if (eventBus == null){ + eventBus = new AsyncEventBus(executor, (exception, context) + -> LOGGER.error("event bus subscriber ex", exception)); + } } public static void post(Event event) {