diff --git a/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/SocketOperatorApi.java b/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/SocketOperatorApi.java
index 5202c6bd1..098a7dd6f 100644
--- a/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/SocketOperatorApi.java
+++ b/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/SocketOperatorApi.java
@@ -1,6 +1,5 @@
package cn.stylefeng.roses.kernel.socket.api;
-import cn.stylefeng.roses.kernel.socket.api.enums.ServerMessageTypeEnum;
import cn.stylefeng.roses.kernel.socket.api.message.SocketMsgCallbackInterface;
/**
@@ -45,4 +44,5 @@ public interface SocketOperatorApi {
* @date 2021/6/2 上午9:54
**/
void msgTypeCallback(String msgType, SocketMsgCallbackInterface callbackInterface);
+
}
diff --git a/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/expander/SocketConfigExpander.java b/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/expander/SocketConfigExpander.java
index a9b1d1fd9..a8bf210ea 100644
--- a/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/expander/SocketConfigExpander.java
+++ b/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/expander/SocketConfigExpander.java
@@ -42,7 +42,7 @@ public class SocketConfigExpander {
* @date 2021/6/7 上午11:39
**/
public static String getSocketHost() {
- return ConfigContext.me().getSysConfigValueWithDefault("socket_host", String.class, "0.0.0.0");
+ return ConfigContext.me().getSysConfigValueWithDefault("SOCKET_HOST", String.class, "0.0.0.0");
}
/**
@@ -53,7 +53,7 @@ public class SocketConfigExpander {
* @date 2021/6/7 上午11:41
**/
public static Integer getSocketPort() {
- return ConfigContext.me().getSysConfigValueWithDefault("socket_port", Integer.class, 11130);
+ return ConfigContext.me().getSysConfigValueWithDefault("SOCKET_PORT", Integer.class, 11130);
}
/**
@@ -64,7 +64,7 @@ public class SocketConfigExpander {
* @date 2021/6/7 上午11:41
**/
public static Integer getSocketServerChunkSize() {
- return ConfigContext.me().getSysConfigValueWithDefault("socket_server_chunk_size", Integer.class, 512 * 1024 * 1024);
+ return ConfigContext.me().getSysConfigValueWithDefault("SOCKET_SERVER_CHUNK_SIZE", Integer.class, 512 * 1024 * 1024);
}
}
diff --git a/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/SocketSessionOperatorApi.java b/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/SocketSessionOperatorApi.java
index bfa76a804..923114e01 100644
--- a/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/SocketSessionOperatorApi.java
+++ b/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/SocketSessionOperatorApi.java
@@ -67,4 +67,5 @@ public interface SocketSessionOperatorApi {
* @date 2021/6/1 上午11:50
**/
boolean isInvalid();
+
}
diff --git a/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/spring/WebSocketApplicationRunnerImpl.java b/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/spring/WebSocketApplicationRunnerImpl.java
index cf542c83c..13fcf4c9d 100644
--- a/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/spring/WebSocketApplicationRunnerImpl.java
+++ b/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/spring/WebSocketApplicationRunnerImpl.java
@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
+
import java.net.StandardSocketOptions;
/**
@@ -35,6 +36,7 @@ public class WebSocketApplicationRunnerImpl implements ApplicationRunner {
aioServerConfig.setServerChunkSize(SocketConfigExpander.getSocketServerChunkSize());
// 设置SocketOptions
+ // 每个套接口都有一个发送缓冲区和一个接收缓冲区,使用SO_RCVBUF可以改变缺省缓冲区大小。
aioServerConfig.setOption(StandardSocketOptions.SO_RCVBUF, 8192);
// 启动
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/message/SocketMessageCenter.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/message/SocketMessageCenter.java
index c379aaf1d..25206891a 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/message/SocketMessageCenter.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/message/SocketMessageCenter.java
@@ -17,8 +17,10 @@ public class SocketMessageCenter {
/**
* 所有消息监听器维护
+ *
+ * key是msgType,value是消息回调监听器
*/
- private static Map messageListenerMap = new HashMap<>();
+ private static final Map messageListenerMap = new HashMap<>();
/**
* 设置消息类型的监听器
@@ -43,4 +45,5 @@ public class SocketMessageCenter {
public static SocketMsgCallbackInterface getSocketMsgCallbackInterface(String msgType) {
return messageListenerMap.get(msgType);
}
+
}
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/WebSocketOperator.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/WebSocketOperator.java
index e007318fb..56927ce49 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/WebSocketOperator.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/WebSocketOperator.java
@@ -1,20 +1,15 @@
package cn.stylefeng.roses.kernel.socket.websocket.operator;
import cn.hutool.core.util.ObjectUtil;
-import cn.stylefeng.roses.kernel.socket.api.message.SocketMsgCallbackInterface;
import cn.stylefeng.roses.kernel.socket.api.SocketOperatorApi;
-import cn.stylefeng.roses.kernel.socket.api.enums.ServerMessageTypeEnum;
import cn.stylefeng.roses.kernel.socket.api.exception.SocketException;
import cn.stylefeng.roses.kernel.socket.api.exception.enums.SocketExceptionEnum;
-import cn.stylefeng.roses.kernel.socket.websocket.message.WebSocketMessagePOJO;
-import cn.stylefeng.roses.kernel.socket.websocket.operator.channel.GettySocketOperator;
-import cn.stylefeng.roses.kernel.socket.websocket.message.SocketMessageCenter;
+import cn.stylefeng.roses.kernel.socket.api.message.SocketMsgCallbackInterface;
import cn.stylefeng.roses.kernel.socket.api.session.pojo.SocketSession;
+import cn.stylefeng.roses.kernel.socket.websocket.message.SocketMessageCenter;
+import cn.stylefeng.roses.kernel.socket.websocket.operator.channel.GettySocketOperator;
+import cn.stylefeng.roses.kernel.socket.websocket.pojo.WebSocketMessageDTO;
import cn.stylefeng.roses.kernel.socket.websocket.session.SessionCenter;
-import com.alibaba.fastjson.JSON;
-import com.gettyio.expansion.handler.codec.websocket.frame.TextWebSocketFrame;
-
-import java.util.List;
/**
* WebSocket操作实现类
@@ -33,21 +28,21 @@ public class WebSocketOperator implements SocketOperatorApi {
if (ObjectUtil.isEmpty(socketSession)) {
throw new SocketException(SocketExceptionEnum.SESSION_NOT_EXIST);
}
- WebSocketMessagePOJO webSocketMessagePOJO = new WebSocketMessagePOJO();
- webSocketMessagePOJO.setData(msg);
- webSocketMessagePOJO.setServerMsgType(msgType);
+ WebSocketMessageDTO webSocketMessageDTO = new WebSocketMessageDTO();
+ webSocketMessageDTO.setData(msg);
+ webSocketMessageDTO.setServerMsgType(msgType);
// 发送内容
- socketSession.getSocketOperatorApi().writeAndFlush(webSocketMessagePOJO);
+ socketSession.getSocketOperatorApi().writeAndFlush(webSocketMessageDTO);
}
@Override
public void sendMsgOfAllUserSession(String msgType, Object msg) {
for (SocketSession socketSession : SessionCenter.getSocketSessionMap().values()) {
- WebSocketMessagePOJO webSocketMessagePOJO = new WebSocketMessagePOJO();
- webSocketMessagePOJO.setData(msg);
- webSocketMessagePOJO.setServerMsgType(msgType);
+ WebSocketMessageDTO webSocketMessageDTO = new WebSocketMessageDTO();
+ webSocketMessageDTO.setData(msg);
+ webSocketMessageDTO.setServerMsgType(msgType);
// 发送内容
- socketSession.getSocketOperatorApi().writeAndFlush(webSocketMessagePOJO);
+ socketSession.getSocketOperatorApi().writeAndFlush(webSocketMessageDTO);
}
}
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/channel/GettySocketOperator.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/channel/GettySocketOperator.java
index 4d1a5f1d4..0e2cbe4a3 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/channel/GettySocketOperator.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/operator/channel/GettySocketOperator.java
@@ -1,6 +1,5 @@
package cn.stylefeng.roses.kernel.socket.websocket.operator.channel;
-import cn.stylefeng.roses.kernel.socket.websocket.message.WebSocketMessagePOJO;
import com.alibaba.fastjson.JSON;
import com.gettyio.core.channel.SocketChannel;
import com.gettyio.expansion.handler.codec.websocket.frame.TextWebSocketFrame;
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/message/WebSocketMessagePOJO.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/pojo/WebSocketMessageDTO.java
similarity index 81%
rename from kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/message/WebSocketMessagePOJO.java
rename to kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/pojo/WebSocketMessageDTO.java
index 4933b7342..d8c6ebbf7 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/message/WebSocketMessagePOJO.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/pojo/WebSocketMessageDTO.java
@@ -1,4 +1,4 @@
-package cn.stylefeng.roses.kernel.socket.websocket.message;
+package cn.stylefeng.roses.kernel.socket.websocket.pojo;
import cn.stylefeng.roses.kernel.socket.api.SocketOperatorApi;
import lombok.Data;
@@ -9,15 +9,16 @@ import lombok.Data;
* 特殊说明一下serverMsgType和clientMsgType的区别
* 1.serverMsgType字段是服务端发送给客户端的字段
* 例如:服务端发送一个系统消息(type:100001),客户端接收到该消息以后判断需不需要处理,不需要处理跳过即可
+ *
* 2.clientMsgType字段是客户端发送给服务器的字段
* 例如:客户端发送给服务器一个心跳消息(type:299999),服务端如果需要处理该消息就注册一个该消息的监听器,
- * 那么收到消息服务端会把消息推送给对应的监听器,接口见{@link SocketOperatorApi#msgTypeCallback}
+ * 那么收到消息服务端会把消息推送给对应的监听器,接口见{@link SocketOperatorApi#msgTypeCallback}
*
* @author majianguo
* @date 2021/6/1 下午2:56
*/
@Data
-public class WebSocketMessagePOJO {
+public class WebSocketMessageDTO {
/**
* 服务端发送的消息类型(客户端如果需要监听该消息类型,注册对应的消息处理器即可)
@@ -40,7 +41,8 @@ public class WebSocketMessagePOJO {
private String formUserId;
/**
- * 数据
+ * 具体发送的数据
*/
private Object data;
+
}
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/WebSocketInitializer.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/WebSocketInitializer.java
index 15d3cd935..9a878fcae 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/WebSocketInitializer.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/WebSocketInitializer.java
@@ -27,6 +27,6 @@ public class WebSocketInitializer extends ChannelInitializer {
// 添加自定义的消息处理器
pipeline.addLast(new WebSocketMessageHandler());
-
}
+
}
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/bind/ChannelIdAndUserBindCenter.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/bind/ChannelIdAndUserBindCenter.java
index 8433a26e7..1ef954d5c 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/bind/ChannelIdAndUserBindCenter.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/bind/ChannelIdAndUserBindCenter.java
@@ -19,13 +19,15 @@ public class ChannelIdAndUserBindCenter {
/**
* 通道和用户绑定关系映射
+ *
+ * key是channelId通道id,value是userId
*/
- private static ConcurrentMap channelIdAndUserBind = new ConcurrentHashMap<>();
+ private static final ConcurrentMap channelIdAndUserBind = new ConcurrentHashMap<>();
/**
* 等待绑定的通道
*/
- private static List waitingBindList = Collections.synchronizedList(new ArrayList<>());
+ private static final List waitingBindList = Collections.synchronizedList(new ArrayList<>());
/**
* 获取通道ID
@@ -95,4 +97,5 @@ public class ChannelIdAndUserBindCenter {
waitingBindList.removeIf(item -> item.getChannelId().equals(channelId));
channelIdAndUserBind.remove(channelId);
}
+
}
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/handler/WebSocketMessageHandler.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/handler/WebSocketMessageHandler.java
index 8e262836d..967b1cbe3 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/handler/WebSocketMessageHandler.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/server/handler/WebSocketMessageHandler.java
@@ -3,12 +3,12 @@ package cn.stylefeng.roses.kernel.socket.websocket.server.handler;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.roses.kernel.socket.api.enums.ClientMessageTypeEnum;
import cn.stylefeng.roses.kernel.socket.api.message.SocketMsgCallbackInterface;
-import cn.stylefeng.roses.kernel.socket.websocket.message.SocketMessageCenter;
import cn.stylefeng.roses.kernel.socket.api.session.pojo.SocketSession;
-import cn.stylefeng.roses.kernel.socket.websocket.session.SessionCenter;
-import cn.stylefeng.roses.kernel.socket.websocket.server.bind.ChannelIdAndUserBindCenter;
+import cn.stylefeng.roses.kernel.socket.websocket.message.SocketMessageCenter;
import cn.stylefeng.roses.kernel.socket.websocket.operator.channel.GettySocketOperator;
-import cn.stylefeng.roses.kernel.socket.websocket.message.WebSocketMessagePOJO;
+import cn.stylefeng.roses.kernel.socket.websocket.pojo.WebSocketMessageDTO;
+import cn.stylefeng.roses.kernel.socket.websocket.server.bind.ChannelIdAndUserBindCenter;
+import cn.stylefeng.roses.kernel.socket.websocket.session.SessionCenter;
import com.alibaba.fastjson.JSON;
import com.gettyio.core.channel.SocketChannel;
import com.gettyio.core.pipeline.in.SimpleChannelInboundHandler;
@@ -52,10 +52,10 @@ public class WebSocketMessageHandler extends SimpleChannelInboundHandler socketSession = new SocketSession<>();
- socketSession.setUserId(webSocketMessagePOJO.getFormUserId());
+ socketSession.setUserId(webSocketMessageDTO.getFormUserId());
socketSession.setSocketOperatorApi(new GettySocketOperator(socketChannel));
socketSession.setConnectionTime(System.currentTimeMillis());
@@ -84,20 +84,21 @@ public class WebSocketMessageHandler extends SimpleChannelInboundHandler userSession = SessionCenter.getSessionByUserId(webSocketMessagePOJO.getFormUserId());
+ SocketSession userSession = SessionCenter.getSessionByUserId(webSocketMessageDTO.getFormUserId());
userSession.setLastActiveTime(System.currentTimeMillis());
// 找到该消息的处理器
- SocketMsgCallbackInterface socketMsgCallbackInterface = SocketMessageCenter.getSocketMsgCallbackInterface(webSocketMessagePOJO.getClientMsgType());
+ SocketMsgCallbackInterface socketMsgCallbackInterface = SocketMessageCenter.getSocketMsgCallbackInterface(webSocketMessageDTO.getClientMsgType());
if (ObjectUtil.isNotEmpty(socketMsgCallbackInterface)) {
// 获取会话
- SocketSession session = SessionCenter.getSessionByUserId(webSocketMessagePOJO.getFormUserId());
+ SocketSession session = SessionCenter.getSessionByUserId(webSocketMessageDTO.getFormUserId());
// 触发回调
- socketMsgCallbackInterface.callback(webSocketMessagePOJO.getClientMsgType(), webSocketMessagePOJO, session);
+ socketMsgCallbackInterface.callback(webSocketMessageDTO.getClientMsgType(), webSocketMessageDTO, session);
} else {
socketChannel.writeAndFlush(new TextWebSocketFrame("{\"code\":\"404\"}"));
}
}
}
+
}
diff --git a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/session/SessionCenter.java b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/session/SessionCenter.java
index b8be35edf..cbc809767 100644
--- a/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/session/SessionCenter.java
+++ b/kernel-d-socket/socket-sdk-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/websocket/session/SessionCenter.java
@@ -19,12 +19,11 @@ public class SessionCenter {
/**
* 所有会话维护
*/
- private static ConcurrentMap> socketSessionMap = new ConcurrentHashMap<>();
+ private static final ConcurrentMap> socketSessionMap = new ConcurrentHashMap<>();
/**
* 获取维护的所有会话
*
- * @return {@link ConcurrentMap< String, SocketSession>}
* @author majianguo
* @date 2021/6/1 下午2:13
**/
@@ -36,7 +35,6 @@ public class SessionCenter {
* 根据用户ID获取会话详情
*
* @param userId 用户ID
- * @return {@link SocketSession }
* @author majianguo
* @date 2021/6/1 下午1:48
**/
@@ -65,4 +63,5 @@ public class SessionCenter {
public static void closed(String userId) {
socketSessionMap.remove(userId);
}
+
}
diff --git a/kernel-d-socket/socket-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/socket/starter/GunsSocketAutoConfiguration.java b/kernel-d-socket/socket-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/socket/starter/GunsSocketAutoConfiguration.java
index 0b02ef54b..b5b6eead3 100644
--- a/kernel-d-socket/socket-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/socket/starter/GunsSocketAutoConfiguration.java
+++ b/kernel-d-socket/socket-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/socket/starter/GunsSocketAutoConfiguration.java
@@ -42,7 +42,6 @@ public class GunsSocketAutoConfiguration {
/**
* Socket操作实现类
*
- * @return {@link cn.stylefeng.roses.kernel.socket.api.SocketOperatorApi}
* @author majianguo
* @date 2021/6/2 下午5:48
**/