From 4742b135a534745b6205431ccb56f5a1ba797cfe Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Sun, 14 Feb 2021 15:00:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B6=88=E6=81=AF=E8=BD=AC?= =?UTF-8?q?=E5=8F=91=E7=B1=BB=E5=9E=8B=E8=BF=87=E6=BB=A4=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- broker/config/wildfirechat.conf | 2 ++ broker/src/main/java/io/moquette/BrokerConstants.java | 1 + .../io/moquette/imhandler/SendMessageHandler.java | 11 ++++++++++- distribution/src/main/resources/wildfirechat.conf | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) 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 ##设备信息转发地址 ##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!