Skip to content

Commit 194acc2

Browse files
authored
Merge pull request #149 from Frederikam/fix-using-closed-sockets
No more "Channel is closed" when emitting events
2 parents d1d8c27 + 313bb70 commit 194acc2

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

LavalinkServer/src/main/java/lavalink/server/player/EventEmitter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason
6262

6363
out.put("reason", endReason.toString());
6464

65-
Ws.send(linkPlayer.getSocket().getSession(), out);
65+
Ws.sendIfOpen(linkPlayer.getSocket().getSession(), out);
6666
}
6767

6868
// These exceptions are already logged by Lavaplayer
@@ -80,7 +80,7 @@ public void onTrackException(AudioPlayer player, AudioTrack track, FriendlyExcep
8080

8181
out.put("error", exception.getMessage());
8282

83-
Ws.send(linkPlayer.getSocket().getSession(), out);
83+
Ws.sendIfOpen(linkPlayer.getSocket().getSession(), out);
8484
}
8585

8686
@Override
@@ -99,7 +99,7 @@ public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs)
9999

100100
out.put("thresholdMs", thresholdMs);
101101

102-
Ws.send(linkPlayer.getSocket().getSession(), out);
102+
Ws.sendIfOpen(linkPlayer.getSocket().getSession(), out);
103103
SocketServer.sendPlayerUpdate(linkPlayer.getSocket().getSession(), linkPlayer);
104104
}
105105

LavalinkServer/src/main/java/lavalink/server/util/Ws.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ public class Ws {
1414

1515
private static final Logger log = LoggerFactory.getLogger(Ws.class);
1616

17+
/**
18+
* Like #send(), but without logging an exception if the socket is closed.
19+
*/
20+
public static void sendIfOpen(WebSocketSession session, JSONObject json) {
21+
if (session.isOpen()) send(session, json);
22+
}
23+
1724
public static void send(WebSocketSession session, JSONObject json) {
1825
UndertowSession undertowSession = (UndertowSession) ((StandardWebSocketSession) session).getNativeSession();
1926
WebSockets.sendText(json.toString(), undertowSession.getWebSocketChannel(),

0 commit comments

Comments
 (0)