Skip to content

Commit b7c6f81

Browse files
committed
添加 solon-net WebSocket:colse(code,reason) 方法及相关适配
1 parent 36bc251 commit b7c6f81

File tree

2 files changed

+51
-6
lines changed
  • solon-jakarta-projects/solon-server
    • solon-server-jetty-jakarta/src/main/java/org/noear/solon/server/jetty/websocket
    • solon-server-undertow-jakarta/src/main/java/org/noear/solon/server/undertow/websocket

2 files changed

+51
-6
lines changed

solon-jakarta-projects/solon-server/solon-server-jetty-jakarta/src/main/java/org/noear/solon/server/jetty/websocket/WebSocketImpl.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
import org.eclipse.jetty.websocket.api.Callback;
1919
import org.eclipse.jetty.websocket.api.Session;
2020
import org.noear.solon.server.util.DecodeUtils;
21-
import org.noear.solon.core.util.RunUtil;
2221
import org.noear.solon.net.websocket.WebSocketBase;
22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
2324

24-
import java.io.IOException;
2525
import java.net.InetSocketAddress;
2626
import java.net.URI;
2727
import java.nio.ByteBuffer;
@@ -33,6 +33,7 @@
3333
* @since 2.6
3434
*/
3535
public class WebSocketImpl extends WebSocketBase {
36+
private static final Logger log = LoggerFactory.getLogger(WebSocketImpl.class);
3637
private final Session real;
3738

3839
public WebSocketImpl(Session real) {
@@ -89,6 +90,25 @@ public Future<Void> send(ByteBuffer binary) {
8990
@Override
9091
public void close() {
9192
super.close();
92-
RunUtil.runAndTry(real::close);
93+
94+
if (real.isOpen()) {
95+
real.close();
96+
}
97+
}
98+
99+
@Override
100+
public void close(int code, String reason) {
101+
super.close(code, reason);
102+
103+
if (real.isOpen()) {
104+
real.close(code, reason, new Callback() {
105+
@Override
106+
public void fail(Throwable ignore) {
107+
if (log.isDebugEnabled()) {
108+
log.debug("Close failure: {}", ignore.getMessage());
109+
}
110+
}
111+
});
112+
}
93113
}
94114
}

solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/main/java/org/noear/solon/server/undertow/websocket/WebSocketImpl.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@
1818
import io.undertow.websockets.core.WebSocketChannel;
1919
import io.undertow.websockets.core.WebSockets;
2020
import org.noear.solon.server.util.DecodeUtils;
21-
import org.noear.solon.core.util.RunUtil;
2221
import org.noear.solon.net.websocket.WebSocketBase;
22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
2324

2425
import java.net.InetSocketAddress;
2526
import java.net.URI;
@@ -31,6 +32,7 @@
3132
* @since 2.6
3233
*/
3334
public class WebSocketImpl extends WebSocketBase {
35+
private static final Logger log = LoggerFactory.getLogger(WebSocketImpl.class);
3436
private WebSocketChannel real;
3537

3638
public WebSocketImpl(WebSocketChannel real) {
@@ -92,7 +94,30 @@ public void close() {
9294
super.close();
9395

9496
if (real.isOpen()) {
95-
RunUtil.runAndTry(real::close);
97+
try {
98+
real.close();
99+
} catch (Throwable ignore) {
100+
if (log.isDebugEnabled()) {
101+
log.debug("Close failure: {}", ignore.getMessage());
102+
}
103+
}
96104
}
97105
}
98-
}
106+
107+
@Override
108+
public void close(int code, String reason) {
109+
super.close(code, reason);
110+
111+
if (real.isOpen()) {
112+
try {
113+
real.setCloseCode(code);
114+
real.setCloseReason(reason);
115+
real.close();
116+
} catch (Throwable ignore) {
117+
if (log.isDebugEnabled()) {
118+
log.debug("Close failure: {}", ignore.getMessage());
119+
}
120+
}
121+
}
122+
}
123+
}

0 commit comments

Comments
 (0)