diff --git a/broker/config/wildfirechat.conf b/broker/config/wildfirechat.conf index ebb2e0b9..54f8605e 100755 --- a/broker/config/wildfirechat.conf +++ b/broker/config/wildfirechat.conf @@ -213,6 +213,8 @@ push.ios.server.address http://localhost:8085/ios/push ##消息转发地址 ##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! #message.forward.url http://localhost:8888/im_event/message +##需要转发的消息类型,当有多个时以英文逗号分割。如果转发所有消息,请注释掉配置或者设置为空 +#message.forward.types 1,2,3 ##设备信息转发地址 ##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! diff --git a/broker/src/main/java/io/moquette/BrokerConstants.java b/broker/src/main/java/io/moquette/BrokerConstants.java index 8ed694be..16626757 100755 --- a/broker/src/main/java/io/moquette/BrokerConstants.java +++ b/broker/src/main/java/io/moquette/BrokerConstants.java @@ -126,6 +126,7 @@ public final class BrokerConstants { public static final String SENSITIVE_Remote_Fail_When_Matched = "sensitive.remote_fail_when_matched"; public static final String MESSAGE_Forward_Url = "message.forward.url"; + public static final String MESSAGE_Forward_Types = "message.forward.types"; public static final String SERVER_MULTI_ENDPOINT = "server.multi_endpoint"; public static final String SERVER_MULTI_PLATFROM_NOTIFICATION = "server.multi_platform_notification"; diff --git a/broker/src/main/java/io/moquette/imhandler/SendMessageHandler.java b/broker/src/main/java/io/moquette/imhandler/SendMessageHandler.java index 3c05bce5..7aa7053f 100644 --- a/broker/src/main/java/io/moquette/imhandler/SendMessageHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/SendMessageHandler.java @@ -32,6 +32,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS; public class SendMessageHandler extends IMHandler { private int mSensitiveType = 0; //命中敏感词时,0 失败,1 吞掉, 2 敏感词替换成*。 private String mForwardUrl = null; + private Set mForwardMessageTypes = new HashSet<>(); private int mBlacklistStrategy = 0; //黑名单中时,0失败,1吞掉。 private String mRemoteSensitiveServerUrl = null; @@ -44,6 +45,14 @@ public class SendMessageHandler extends IMHandler { String forwardUrl = mServer.getConfig().getProperty(BrokerConstants.MESSAGE_Forward_Url); if (!StringUtil.isNullOrEmpty(forwardUrl)) { mForwardUrl = forwardUrl; + + String forwardTypes = mServer.getConfig().getProperty(BrokerConstants.MESSAGE_Forward_Types); + if (!StringUtil.isNullOrEmpty(forwardTypes)) { + String[] tss = forwardTypes.split(","); + for (String ts:tss) { + mForwardMessageTypes.add(Integer.parseInt(ts.trim())); + } + } } try { @@ -142,7 +151,7 @@ public class SendMessageHandler extends IMHandler { } message = message.toBuilder().setFromUser(fromUser).setMessageId(messageId).setServerTimestamp(timestamp).build(); - if (mForwardUrl != null) { + if (mForwardUrl != null && (mForwardMessageTypes.isEmpty() || mForwardMessageTypes.contains(message.getContent().getType()))) { publisher.forwardMessage(message, mForwardUrl); } diff --git a/distribution/src/main/resources/wildfirechat.conf b/distribution/src/main/resources/wildfirechat.conf index 8c9929ed..dac859d6 100755 --- a/distribution/src/main/resources/wildfirechat.conf +++ b/distribution/src/main/resources/wildfirechat.conf @@ -212,6 +212,8 @@ push.ios.server.address http://localhost:8085/ios/push ##消息转发地址 ##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! #message.forward.url http://localhost:8087/im_event/message +##需要转发的消息类型,当有多个时以英文逗号分割。如果转发所有消息,请注释掉配置或者设置为空 +#message.forward.types 1,2,3 ##设备信息转发地址 ##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!