Skip to content

Commit 471c290

Browse files
authored
Merge pull request #473 from tcheeric/fix/websocket-handler-close-client
fix/websocket-handler-close-client
2 parents 6d653b0 + 31ce804 commit 471c290

4 files changed

Lines changed: 8 additions & 5 deletions

File tree

nostr-java-api/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
<dependency>
109109
<groupId>uk.org.lidalia</groupId>
110110
<artifactId>slf4j-test</artifactId>
111+
<version>2.4.0</version>
111112
<scope>test</scope>
112113
</dependency>
113114
</dependencies>

nostr-java-api/src/main/java/nostr/api/WebSocketClientHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ protected WebSocketClientHandler(
6161
clientFactory);
6262
}
6363

64-
WebSocketClientHandler(
64+
public WebSocketClientHandler(
6565
@NonNull String relayName,
6666
@NonNull RelayUri relayUri,
6767
@NonNull SpringWebSocketClient eventClient,
@@ -153,6 +153,7 @@ private AutoCloseable openSubscription(
153153
"Subscription closed by relay %s for id %s"
154154
.formatted(relayName, subscriptionId.value()))));
155155
} catch (IOException e) {
156+
errorListener.accept(e);
156157
throw new RuntimeException("Failed to establish subscription", e);
157158
}
158159
}
@@ -180,9 +181,9 @@ public void close() throws IOException {
180181
AutoCloseable closeFrameHandle = openCloseFrame(subscriptionId, accumulator);
181182
closeQuietly(closeFrameHandle, accumulator);
182183
closeQuietly(delegate, accumulator);
184+
closeQuietly(client, accumulator);
183185

184186
requestClientMap.remove(subscriptionId);
185-
closeQuietly(client, accumulator);
186187
accumulator.rethrowIfNecessary();
187188
}
188189

nostr-java-api/src/test/java/nostr/api/integration/support/FakeWebSocketClient.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,13 @@ public AutoCloseable subscribe(
7474
throws IOException {
7575
Objects.requireNonNull(messageListener, "messageListener");
7676
Objects.requireNonNull(errorListener, "errorListener");
77+
sentPayloads.add(requestJson);
7778
if (!open) {
78-
throw new IOException("WebSocket session is closed for " + relayUrl);
79+
log.debug("Subscription on closed WebSocket for {}, returning no-op handle", relayUrl);
80+
return () -> {}; // No-op handle since client is already closed
7981
}
8082
String id = UUID.randomUUID().toString();
8183
listeners.put(id, new Listener(messageListener, errorListener, closeListener));
82-
sentPayloads.add(requestJson);
8384
return () -> listeners.remove(id);
8485
}
8586

pom.xml

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

44
<groupId>xyz.tcheeric</groupId>
55
<artifactId>nostr-java</artifactId>
6-
<version>0.6.5-SNAPSHOT</version>
6+
<version>0.6.6-SNAPSHOT</version>
77
<packaging>pom</packaging>
88

99
<name>${project.artifactId}</name>

0 commit comments

Comments
 (0)