From 4cd0349911535093ea4a8ed47f3bb5a67e554175 Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Wed, 29 Sep 2021 10:17:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E9=86=92=E6=B6=88=E6=81=AF=E8=BD=AC?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- broker/config/wildfirechat.conf | 5 +++++ .../main/java/io/moquette/BrokerConstants.java | 2 ++ .../io/moquette/imhandler/SendMessageHandler.java | 15 ++++++++++----- distribution/src/main/resources/wildfirechat.conf | 5 +++++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/broker/config/wildfirechat.conf b/broker/config/wildfirechat.conf index f23f536d..095c1699 100755 --- a/broker/config/wildfirechat.conf +++ b/broker/config/wildfirechat.conf @@ -264,6 +264,11 @@ push.ios.server.address http://localhost:8085/ios/push ##需要转发的消息类型,当有多个时以英文逗号分割。如果转发所有消息,请注释掉配置或者设置为空 #message.forward.types 1,2,3 +##提醒消息转发地址,@全体用户和@某个用户消息会回调此地址。此转发不受${message.forward.types}限制。 +##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! +#message.mentionmsg.forward.url http://localhost:8888/im_event/message + + ##设备信息转发地址 ##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! #things_message.forward.url http://localhost:8888/im_event/things/message diff --git a/broker/src/main/java/io/moquette/BrokerConstants.java b/broker/src/main/java/io/moquette/BrokerConstants.java index 2de195d8..4255160c 100755 --- a/broker/src/main/java/io/moquette/BrokerConstants.java +++ b/broker/src/main/java/io/moquette/BrokerConstants.java @@ -128,6 +128,8 @@ public final class BrokerConstants { public static final String MESSAGE_Forward_Url = "message.forward.url"; public static final String MESSAGE_Forward_Types = "message.forward.types"; + public static final String MESSAGE_MentionMsg_Forward_Url = "message.mentionmsg.forward.url"; + 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 da8e918f..a767c1da 100644 --- a/broker/src/main/java/io/moquette/imhandler/SendMessageHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/SendMessageHandler.java @@ -33,6 +33,7 @@ public class SendMessageHandler extends IMHandler { private int mSensitiveType = 0; //命中敏感词时,0 失败,1 吞掉, 2 敏感词替换成*。 private String mForwardUrl = null; private Set mForwardMessageTypes = new HashSet<>(); + private String mMentionForwardUrl = null; private int mBlacklistStrategy = 0; //黑名单中时,0失败,1吞掉。 private boolean mNoForwardAdminMessage = false; @@ -43,10 +44,8 @@ public class SendMessageHandler extends IMHandler { public SendMessageHandler() { super(); - String forwardUrl = mServer.getConfig().getProperty(BrokerConstants.MESSAGE_Forward_Url); - if (!StringUtil.isNullOrEmpty(forwardUrl)) { - mForwardUrl = forwardUrl; - + mForwardUrl = mServer.getConfig().getProperty(BrokerConstants.MESSAGE_Forward_Url); + if (!StringUtil.isNullOrEmpty(mForwardUrl)) { String forwardTypes = mServer.getConfig().getProperty(BrokerConstants.MESSAGE_Forward_Types); if (!StringUtil.isNullOrEmpty(forwardTypes)) { String[] tss = forwardTypes.split(","); @@ -56,6 +55,8 @@ public class SendMessageHandler extends IMHandler { } } + mMentionForwardUrl = mServer.getConfig().getProperty(BrokerConstants.MESSAGE_MentionMsg_Forward_Url); + try { mSensitiveType = Integer.parseInt(mServer.getConfig().getProperty(BrokerConstants.SENSITIVE_Filter_Type)); } catch (Exception e) { @@ -169,10 +170,14 @@ public class SendMessageHandler extends IMHandler { } message = message.toBuilder().setFromUser(fromUser).setMessageId(messageId).setServerTimestamp(timestamp).build(); - if (mForwardUrl != null && (mForwardMessageTypes.isEmpty() || mForwardMessageTypes.contains(message.getContent().getType())) && !(isAdmin && mNoForwardAdminMessage)) { + if (!StringUtil.isNullOrEmpty(mForwardUrl) && (mForwardMessageTypes.isEmpty() || mForwardMessageTypes.contains(message.getContent().getType())) && !(isAdmin && mNoForwardAdminMessage)) { publisher.forwardMessage(message, mForwardUrl); } + if(!StringUtil.isNullOrEmpty(mMentionForwardUrl) && message.hasContent() && message.getContent().getMentionedType() != 0) { + publisher.forwardMessage(message, mMentionForwardUrl); + } + if (!isAdmin) { if(StringUtil.isNullOrEmpty(mRemoteSensitiveServerUrl)) { Set matched = m_messagesStore.handleSensitiveWord(message.getContent().getSearchableContent()); diff --git a/distribution/src/main/resources/wildfirechat.conf b/distribution/src/main/resources/wildfirechat.conf index 0bb9c57e..a89fd119 100755 --- a/distribution/src/main/resources/wildfirechat.conf +++ b/distribution/src/main/resources/wildfirechat.conf @@ -262,6 +262,11 @@ push.ios.server.address http://localhost:8085/ios/push ##需要转发的消息类型,当有多个时以英文逗号分割。如果转发所有消息,请注释掉配置或者设置为空 #message.forward.types 1,2,3 +##提醒消息转发地址,@全体用户和@某个用户消息会回调此地址。此转发不受${message.forward.types}限制。 +##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! +#message.mentionmsg.forward.url http://localhost:8888/im_event/message + + ##设备信息转发地址 ##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! #things_message.forward.url http://localhost:8087/im_event/things/message