Compare commits

...
6 Commits
32 changed files with 125 additions and 46 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
<relativePath>../</relativePath> <relativePath>../</relativePath>
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.3.3</version> <version>1.3.4</version>
</parent> </parent>
<artifactId>moquette-broker</artifactId> <artifactId>moquette-broker</artifactId>
@@ -900,11 +900,13 @@ public class MemoryMessagesStore implements IMessagesStore {
session.setPullHistoryMsg(true); session.setPullHistoryMsg(true);
} }
long previousCurrent;
while (true) { while (true) {
Map.Entry<Long, Long> entry = maps.higherEntry(current); Map.Entry<Long, Long> entry = maps.higherEntry(current);
if (entry == null) { if (entry == null) {
break; break;
} }
previousCurrent = current;
current = entry.getKey(); current = entry.getKey();
long targetMessageId = entry.getValue(); long targetMessageId = entry.getValue();
@@ -933,6 +935,8 @@ public class MemoryMessagesStore implements IMessagesStore {
if (size >= 512 * 1024) { //3M if (size >= 512 * 1024) { //3M
if(builder.getMessageCount() == 0){ if(builder.getMessageCount() == 0){
builder.addMessage(bundle.getMessage()); builder.addMessage(bundle.getMessage());
} else {
current = previousCurrent;
} }
break; break;
} }
@@ -2454,7 +2458,7 @@ public class MemoryMessagesStore implements IMessagesStore {
} }
boolean isExpired = false; boolean isExpired = false;
if (!canRecall && message.getFromUser().equals(operatorId)) { if (!canRecall && message.getFromUser().equals(operatorId)) {
if (now - message.getServerTimestamp() > mRecallTimeLimit * 1000) { if (mRecallTimeLimit > 0 && now - message.getServerTimestamp() > mRecallTimeLimit * 1000) {
isExpired = true; isExpired = true;
} else { } else {
canRecall = true; canRecall = true;
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.3.3</version> <version>1.3.4</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -6,7 +6,7 @@
<!--<relativePath>../pom.xml</relativePath>--> <!--<relativePath>../pom.xml</relativePath>-->
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.3.3</version> <version>1.3.4</version>
</parent> </parent>
<artifactId>distribution</artifactId> <artifactId>distribution</artifactId>
+1 -1
View File
@@ -12,7 +12,7 @@
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>1.3.3</version> <version>1.3.4</version>
<name>Wildfire Chat</name> <name>Wildfire Chat</name>
<description>Wildfire Chat Server</description> <description>Wildfire Chat Server</description>
<inceptionYear>2019</inceptionYear> <inceptionYear>2019</inceptionYear>
+8
View File
@@ -12,6 +12,14 @@
# 更新记录 # 更新记录
--------------
Release note 1.3.4:
1. 优化Server SDK中消息内容的处理方式。
2. Server SDK中添加注册消息接口,在使用自定义消息时,不需要修改Server SDK源码。
3. 用户撤回时间配置允许为负数,为负数时可以任意时间撤回。
4. Server SDK添加超时参数。
5. 解决当分段拉取消息时,可能丢失消息的问题。
-------------- --------------
Release note 1.3.3: Release note 1.3.3:
1. 转移群组时检查新群主是否在群中。 1. 转移群组时检查新群主是否在群中。
+1 -1
View File
@@ -3,7 +3,7 @@
<parent> <parent>
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.3.3</version> <version>1.3.4</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
File diff suppressed because one or more lines are too long
@@ -32,7 +32,7 @@ public class ArticlesMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent(topArticle.title); payload.setSearchableContent(topArticle.title);
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
@@ -53,6 +53,7 @@ public class ArticlesMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
try { try {
super.decode(payload);
JSONObject object = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData()))); JSONObject object = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData())));
JSONObject topObj = (JSONObject) object.get("top"); JSONObject topObj = (JSONObject) object.get("top");
this.topArticle = Article.fromJson(topObj); this.topArticle = Article.fromJson(topObj);
@@ -133,7 +133,7 @@ public class CallStartMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setContent(callId); payload.setContent(callId);
payload.setPushContent("音视频通话邀请"); payload.setPushContent("音视频通话邀请");
@@ -175,6 +175,7 @@ public class CallStartMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
callId = payload.getContent(); callId = payload.getContent();
try { try {
@@ -100,7 +100,7 @@ public class CardMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setContent(target); payload.setContent(target);
JSONObject objWrite = new JSONObject(); JSONObject objWrite = new JSONObject();
objWrite.put("t", type); objWrite.put("t", type);
@@ -116,6 +116,7 @@ public class CardMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
target = payload.getContent(); target = payload.getContent();
try { try {
if (!StringUtil.isNullOrEmpty(payload.getBase64edData())) { if (!StringUtil.isNullOrEmpty(payload.getBase64edData())) {
@@ -26,7 +26,7 @@ public class FileMessageContent extends MediaMessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent(name); payload.setSearchableContent(name);
payload.setContent(size + ""); payload.setContent(size + "");
@@ -51,7 +51,7 @@ public class FileMessageContent extends MediaMessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decodeBase(payload); super.decode(payload);
if (payload.getSearchableContent().startsWith(FILE_NAME_PREFIX)) { if (payload.getSearchableContent().startsWith(FILE_NAME_PREFIX)) {
name = payload.getSearchableContent().substring(payload.getSearchableContent().indexOf(FILE_NAME_PREFIX) + FILE_NAME_PREFIX.length()); name = payload.getSearchableContent().substring(payload.getSearchableContent().indexOf(FILE_NAME_PREFIX) + FILE_NAME_PREFIX.length());
@@ -34,7 +34,7 @@ public class ImageMessageContent extends MediaMessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent("[图片]"); payload.setSearchableContent("[图片]");
payload.setBase64edData(Base64.getEncoder().encodeToString(thumbnailBytes)); payload.setBase64edData(Base64.getEncoder().encodeToString(thumbnailBytes));
@@ -44,7 +44,7 @@ public class ImageMessageContent extends MediaMessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decodeBase(payload); super.decode(payload);
thumbnailBytes = Base64.getDecoder().decode(payload.getBase64edData()); thumbnailBytes = Base64.getDecoder().decode(payload.getBase64edData());
} }
@@ -72,9 +72,7 @@ public class LinkMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent(title); payload.setSearchableContent(title);
JSONObject objWrite = new JSONObject(); JSONObject objWrite = new JSONObject();
objWrite.put("d", contentDigest); objWrite.put("d", contentDigest);
@@ -88,9 +86,8 @@ public class LinkMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
title = payload.getSearchableContent(); title = payload.getSearchableContent();
try { try {
if (!StringUtil.isNullOrEmpty(payload.getBase64edData())) { if (!StringUtil.isNullOrEmpty(payload.getBase64edData())) {
JSONObject jsonObject = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData()))); JSONObject jsonObject = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData())));
@@ -66,7 +66,7 @@ public class LocationMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent(title); payload.setSearchableContent(title);
payload.setBase64edData(Base64.getEncoder().encodeToString(this.thumbnailByte)); payload.setBase64edData(Base64.getEncoder().encodeToString(this.thumbnailByte));
@@ -82,6 +82,7 @@ public class LocationMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
if (!StringUtil.isNullOrEmpty(payload.getBase64edData())) { if (!StringUtil.isNullOrEmpty(payload.getBase64edData())) {
this.thumbnailByte = Base64.getDecoder().decode(payload.getBase64edData()); this.thumbnailByte = Base64.getDecoder().decode(payload.getBase64edData());
} }
@@ -14,12 +14,18 @@ abstract public class MediaMessageContent extends MessageContent {
} }
@Override @Override
protected MessagePayload encodeBase() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setRemoteMediaUrl(remoteMediaUrl); payload.setRemoteMediaUrl(remoteMediaUrl);
payload.setMediaType(getMediaType()); payload.setMediaType(getMediaType());
return payload; return payload;
} }
@Override
public void decode(MessagePayload payload) {
super.decode(payload);
remoteMediaUrl = payload.getRemoteMediaUrl();
}
protected abstract int getMediaType(); protected abstract int getMediaType();
} }
@@ -22,7 +22,7 @@ public abstract class MessageContent {
return this; return this;
} }
protected MessagePayload encodeBase() { public MessagePayload encode() {
MessagePayload payload = new MessagePayload(); MessagePayload payload = new MessagePayload();
payload.setType(getContentType()); payload.setType(getContentType());
payload.setPersistFlag(getPersistFlag()); payload.setPersistFlag(getPersistFlag());
@@ -32,13 +32,11 @@ public abstract class MessageContent {
return payload; return payload;
} }
protected void decodeBase(MessagePayload payload) { protected void decode(MessagePayload payload) {
this.mentionedType = payload.getMentionedType(); this.mentionedType = payload.getMentionedType();
this.mentionedTargets = payload.getMentionedTarget(); this.mentionedTargets = payload.getMentionedTarget();
this.extra = payload.getExtra(); this.extra = payload.getExtra();
} }
abstract public int getContentType(); abstract public int getContentType();
abstract public int getPersistFlag(); abstract public int getPersistFlag();
abstract public MessagePayload encode();
abstract public void decode(MessagePayload payload);
} }
@@ -12,7 +12,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
public class MessageContentFactory { public class MessageContentFactory {
private static final Map<Integer, Class<MessageContent>> contentClassMap = new ConcurrentHashMap<>(); private static final Map<Integer, Class<? extends MessageContent>> contentClassMap = new ConcurrentHashMap<>();
static { static {
registerAllMessageContent(); registerAllMessageContent();
@@ -36,7 +36,7 @@ public class MessageContentFactory {
} }
public static MessageContent decodeMessageContent(MessagePayload messagePayload) { public static MessageContent decodeMessageContent(MessagePayload messagePayload) {
Class<MessageContent> cls = contentClassMap.get(messagePayload.getType()); Class<? extends MessageContent> cls = contentClassMap.get(messagePayload.getType());
MessageContent messageContent; MessageContent messageContent;
if(cls != null) { if(cls != null) {
try { try {
@@ -49,11 +49,15 @@ public class MessageContentFactory {
} else { } else {
messageContent = new UnknownMessageContent(); messageContent = new UnknownMessageContent();
} }
messageContent.decodeBase(messagePayload);
messageContent.decode(messagePayload); messageContent.decode(messagePayload);
return messageContent; return messageContent;
} }
public static void registerCustomMessageContent(Class<? extends MessageContent> cls) throws Exception {
MessageContent content = cls.newInstance();
contentClassMap.put(content.getContentType(), cls);
}
private static void registerAllMessageContent() { private static void registerAllMessageContent() {
try { try {
for (Class cls : ClassUtil.getAllAssignedClass(MessageContent.class)) { for (Class cls : ClassUtil.getAllAssignedClass(MessageContent.class)) {
@@ -43,7 +43,7 @@ public class MultiCallOngoingMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setContent(callId); payload.setContent(callId);
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("initiator", this.initiator); object.put("initiator", this.initiator);
@@ -60,6 +60,7 @@ public class MultiCallOngoingMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
this.callId = payload.getContent(); this.callId = payload.getContent();
try { try {
JSONObject object = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData()))); JSONObject object = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData())));
@@ -57,7 +57,7 @@ public class NotDeliveredMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
obj.put("mid", this.messageUid); obj.put("mid", this.messageUid);
obj.put("all", this.allFailure); obj.put("all", this.allFailure);
@@ -74,7 +74,7 @@ public class NotDeliveredMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
try { try {
super.decode(payload);
JSONObject obj = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData()))); JSONObject obj = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData())));
this.messageUid = (long) obj.get("mid"); this.messageUid = (long) obj.get("mid");
this.allFailure = (boolean) obj.get("all"); this.allFailure = (boolean) obj.get("all");
@@ -89,7 +89,7 @@ public class RichNotificationMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = encodeBase(); MessagePayload payload = super.encode();
payload.setPushContent(title); payload.setPushContent(title);
payload.setContent(desc); payload.setContent(desc);
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
@@ -113,5 +113,6 @@ public class RichNotificationMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
} }
} }
@@ -35,11 +35,12 @@ public class SoundMessageContent extends MediaMessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
} }
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = encodeBase(); MessagePayload payload = super.encode();
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("duration", duration); jsonObject.put("duration", duration);
payload.setContent(jsonObject.toJSONString()); payload.setContent(jsonObject.toJSONString());
@@ -34,7 +34,7 @@ public class StickerMessageContent extends MediaMessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent("[动态表情]"); payload.setSearchableContent("[动态表情]");
JSONObject objWrite = new JSONObject(); JSONObject objWrite = new JSONObject();
objWrite.put("x", width); objWrite.put("x", width);
@@ -47,8 +47,7 @@ public class StickerMessageContent extends MediaMessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decodeBase(payload); super.decode(payload);
try { try {
JSONObject jsonObject = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData()))); JSONObject jsonObject = (JSONObject) new JSONParser().parse(new String(Base64.getDecoder().decode(payload.getBase64edData())));
width = (int) jsonObject.get("x"); width = (int) jsonObject.get("x");
@@ -38,13 +38,14 @@ public class StreamTextGeneratedMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
this.streamId = payload.getContent(); this.streamId = payload.getContent();
this.text = payload.getSearchableContent(); this.text = payload.getSearchableContent();
} }
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent(text); payload.setSearchableContent(text);
payload.setContent(streamId); payload.setContent(streamId);
return payload; return payload;
@@ -38,13 +38,14 @@ public class StreamTextGeneratingMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
streamId = payload.getContent(); streamId = payload.getContent();
text = payload.getSearchableContent(); text = payload.getSearchableContent();
} }
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent(text); payload.setSearchableContent(text);
payload.setContent(streamId); payload.setContent(streamId);
return payload; return payload;
@@ -56,7 +56,7 @@ public class TextMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent(text); payload.setSearchableContent(text);
if(quoteInfo != null) { if(quoteInfo != null) {
payload.setBase64edData(Base64.getEncoder().encodeToString(quoteInfo.encode().toJSONString().getBytes(StandardCharsets.UTF_8))); payload.setBase64edData(Base64.getEncoder().encodeToString(quoteInfo.encode().toJSONString().getBytes(StandardCharsets.UTF_8)));
@@ -66,6 +66,7 @@ public class TextMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decode(payload);
text = payload.getSearchableContent(); text = payload.getSearchableContent();
if(!TextUtils.isEmpty(payload.getBase64edData())) { if(!TextUtils.isEmpty(payload.getBase64edData())) {
String jsonStr = new String(Base64.getDecoder().decode(payload.getBase64edData()), StandardCharsets.UTF_8); String jsonStr = new String(Base64.getDecoder().decode(payload.getBase64edData()), StandardCharsets.UTF_8);
@@ -24,7 +24,7 @@ public class TipNotificationMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setContent(tip); payload.setContent(tip);
return payload; return payload;
@@ -32,7 +32,7 @@ public class TipNotificationMessageContent extends MessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decodeBase(payload); super.decode(payload);
tip = payload.getContent(); tip = payload.getContent();
} }
@@ -43,14 +43,14 @@ public class TypingMessageContent extends MessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setContent(typingType + ""); payload.setContent(typingType + "");
return payload; return payload;
} }
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decodeBase(payload); super.decode(payload);
typingType = Integer.parseInt(payload.getContent()); typingType = Integer.parseInt(payload.getContent());
} }
} }
@@ -58,7 +58,7 @@ public class VideoMessageContent extends MediaMessageContent {
@Override @Override
public MessagePayload encode() { public MessagePayload encode() {
MessagePayload payload = super.encodeBase(); MessagePayload payload = super.encode();
payload.setSearchableContent("[视频]"); payload.setSearchableContent("[视频]");
payload.setBase64edData(Base64.getEncoder().encodeToString(thumbnailBytes)); payload.setBase64edData(Base64.getEncoder().encodeToString(thumbnailBytes));
@@ -73,7 +73,7 @@ public class VideoMessageContent extends MediaMessageContent {
@Override @Override
public void decode(MessagePayload payload) { public void decode(MessagePayload payload) {
super.decodeBase(payload); super.decode(payload);
thumbnailBytes = Base64.getDecoder().decode(payload.getBase64edData()); thumbnailBytes = Base64.getDecoder().decode(payload.getBase64edData());
try { try {
JSONObject jsonObject = (JSONObject) new JSONParser().parse(payload.getContent()); JSONObject jsonObject = (JSONObject) new JSONParser().parse(payload.getContent());
@@ -38,11 +38,24 @@ public class AdminHttpUtils extends JsonUtils {
private static CloseableHttpClient httpClient; private static CloseableHttpClient httpClient;
public static void init(String url, String secret) { public static void init(String url, String secret) {
init(url, secret, 15000);
}
public static void init(String url, String secret, int timeout) {
adminUrl = url.trim(); adminUrl = url.trim();
adminSecret = secret.trim(); adminSecret = secret.trim();
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setValidateAfterInactivity(1000); cm.setValidateAfterInactivity(1000);
int connectTimeout = 5000; // 连接超时时间
int connectionRequestTimeout = 3000; // 从连接池获取连接的超时时间
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setSocketTimeout(timeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.build();
httpClient = HttpClients.custom() httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setConnectionManager(cm) .setConnectionManager(cm)
.evictExpiredConnections() .evictExpiredConnections()
.evictIdleConnections(60L, TimeUnit.SECONDS) .evictIdleConnections(60L, TimeUnit.SECONDS)
@@ -8,6 +8,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
@@ -40,7 +41,16 @@ public class ChannelHttpUtils extends JsonUtils {
this.channelSecret = secret.trim(); this.channelSecret = secret.trim();
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setValidateAfterInactivity(1000); cm.setValidateAfterInactivity(1000);
int connectTimeout = 5000; // 连接超时时间
int socketTimeout = 15000; // 请求超时时间
int connectionRequestTimeout = 3000; // 从连接池获取连接的超时时间
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setSocketTimeout(socketTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.build();
httpClient = HttpClients.custom() httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setConnectionManager(cm) .setConnectionManager(cm)
.evictExpiredConnections() .evictExpiredConnections()
.evictIdleConnections(60L, TimeUnit.SECONDS) .evictIdleConnections(60L, TimeUnit.SECONDS)
@@ -9,6 +9,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
@@ -41,7 +42,16 @@ public class RobotHttpUtils extends JsonUtils {
this.robotSecret = robotSecret.trim(); this.robotSecret = robotSecret.trim();
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setValidateAfterInactivity(1000); cm.setValidateAfterInactivity(1000);
int connectTimeout = 5000; // 连接超时时间
int socketTimeout = 15000; // 请求超时时间
int connectionRequestTimeout = 3000; // 从连接池获取连接的超时时间
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setSocketTimeout(socketTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.build();
httpClient = HttpClients.custom() httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setConnectionManager(cm) .setConnectionManager(cm)
.evictExpiredConnections() .evictExpiredConnections()
.evictIdleConnections(60L, TimeUnit.SECONDS) .evictIdleConnections(60L, TimeUnit.SECONDS)