Skip to content

Commit 190e1ab

Browse files
committed
update
1 parent b4c35b1 commit 190e1ab

File tree

4 files changed

+65
-11
lines changed

4 files changed

+65
-11
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<modelVersion>4.0.0</modelVersion>
1212
<artifactId>websocket-client</artifactId>
13-
<version>1.0.10</version>
13+
<version>1.0.12</version>
1414
<name>WebsocketClient</name>
1515
<packaging>jar</packaging>
1616

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package info.unterrainer.websocketclient;
2+
3+
import info.unterrainer.commons.serialization.jsonmapper.JsonMapper;
4+
import jakarta.websocket.Session;
5+
import lombok.Data;
6+
import lombok.RequiredArgsConstructor;
7+
import lombok.experimental.Accessors;
8+
import lombok.experimental.SuperBuilder;
9+
10+
@Data
11+
@RequiredArgsConstructor
12+
@SuperBuilder(toBuilder = true)
13+
@Accessors(fluent = true)
14+
public class EventContext {
15+
16+
private final Session session;
17+
private final JsonMapper jsonMapper;
18+
19+
private String message;
20+
private Byte[] binaryMessage;
21+
private Throwable error;
22+
23+
public <T> T message(Class<T> type) {
24+
return jsonMapper.fromStringTo(type, message);
25+
}
26+
}

src/main/java/info/unterrainer/websocketclient/WebsocketConnection.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ public class WebsocketConnection implements AutoCloseable {
3939

4040
@Getter
4141
private final String host;
42-
private final Consumer<Session> onOpenHandler;
43-
private final Consumer<String> onMessageHandler;
44-
private final Consumer<Session> onCloseHandler;
45-
private final Consumer<Throwable> onErrorHandler;
42+
private final Consumer<EventContext> onOpenHandler;
43+
private final Consumer<EventContext> onMessageHandler;
44+
private final Consumer<EventContext> onBinaryMessageHandler;
45+
private final Consumer<EventContext> onCloseHandler;
46+
private final Consumer<EventContext> onErrorHandler;
4647
private final String keycloakHost;
4748
private final String keycloakClient;
4849
private final String keycloakClientSecret;

src/main/java/info/unterrainer/websocketclient/WebsocketEndpoints.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,10 @@ public WebsocketEndpoints(WebsocketConnection client) {
2121
public void onOpen(Session session, EndpointConfig config) {
2222
client.sessionReady().complete(session);
2323
log.info("Connected to server");
24-
25-
// onOpen-Handler
2624
if (client.onOpenHandler() != null) {
2725
try {
28-
client.onOpenHandler().accept(session);
26+
client.onOpenHandler()
27+
.accept(EventContext.builder().session(session).jsonMapper(client.jsonMapper()).build());
2928
} catch (Exception e) {
3029
log.error("Error executing onOpen handler: ", e);
3130
}
@@ -37,7 +36,29 @@ public void onOpen(Session session, EndpointConfig config) {
3736
client.awaitOpen(Duration.ofMillis(5000L));
3837
if (client.onMessageHandler() != null) {
3938
try {
40-
client.onMessageHandler().accept(message);
39+
client.onMessageHandler()
40+
.accept(EventContext.builder()
41+
.session(session)
42+
.jsonMapper(client.jsonMapper())
43+
.message(message)
44+
.build());
45+
} catch (Exception e) {
46+
log.error("Error executing onMessage handler: ", e);
47+
}
48+
}
49+
});
50+
51+
session.addMessageHandler(Byte[].class, message -> {
52+
log.debug("Received binary-message: " + message);
53+
client.awaitOpen(Duration.ofMillis(5000L));
54+
if (client.onBinaryMessageHandler() != null) {
55+
try {
56+
client.onBinaryMessageHandler()
57+
.accept(EventContext.builder()
58+
.session(session)
59+
.jsonMapper(client.jsonMapper())
60+
.binaryMessage(message)
61+
.build());
4162
} catch (Exception e) {
4263
log.error("Error executing onMessage handler: ", e);
4364
}
@@ -51,7 +72,8 @@ public void onClose(Session session, CloseReason closeReason) {
5172
log.info("Disconnected from server: {}", closeReason);
5273
if (client.onCloseHandler() != null) {
5374
try {
54-
client.onCloseHandler().accept(s);
75+
client.onCloseHandler()
76+
.accept(EventContext.builder().session(session).jsonMapper(client.jsonMapper()).build());
5577
} catch (Exception e) {
5678
log.error("Error executing onClose handler: ", e);
5779
}
@@ -70,7 +92,12 @@ public void onError(Session session, Throwable throwable) {
7092
log.error("Error occurred: ", throwable);
7193
if (client.onErrorHandler() != null) {
7294
try {
73-
client.onErrorHandler().accept(throwable);
95+
client.onErrorHandler()
96+
.accept(EventContext.builder()
97+
.session(session)
98+
.jsonMapper(client.jsonMapper())
99+
.error(throwable)
100+
.build());
74101
} catch (Exception e) {
75102
log.error("Error executing onError handler: ", e);
76103
}

0 commit comments

Comments
 (0)