Skip to content

Commit 8a89706

Browse files
authored
Merge pull request #850 from Andreas-Bur/bug-834
Fix issue #834 by starting WebSocketWorker of the WebSocketServer in the start function
2 parents 564b8aa + f7b7cee commit 8a89706

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

src/main/java/org/java_websocket/server/WebSocketServer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,6 @@ public WebSocketServer( InetSocketAddress address , int decodercount , List<Draf
211211
for( int i = 0 ; i < decodercount ; i++ ) {
212212
WebSocketWorker ex = new WebSocketWorker();
213213
decoders.add( ex );
214-
ex.start();
215214
}
216215
}
217216

@@ -229,6 +228,10 @@ public void start() {
229228
if( selectorthread != null )
230229
throw new IllegalStateException( getClass().getName() + " can only be started once." );
231230
new Thread( this ).start();
231+
232+
for( WebSocketWorker ex : decoders ){
233+
ex.start();
234+
}
232235
}
233236

234237
/**

src/test/java/org/java_websocket/issues/AllIssueTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
org.java_websocket.issues.Issue732Test.class,
4242
org.java_websocket.issues.Issue764Test.class,
4343
org.java_websocket.issues.Issue765Test.class,
44-
org.java_websocket.issues.Issue825Test.class
44+
org.java_websocket.issues.Issue825Test.class,
45+
org.java_websocket.issues.Issue834Test.class
4546
})
4647
/**
4748
* Start all tests for issues
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.java_websocket.issues;
2+
3+
import org.java_websocket.WebSocket;
4+
import org.java_websocket.handshake.ClientHandshake;
5+
import org.java_websocket.server.WebSocketServer;
6+
import org.java_websocket.util.SocketUtil;
7+
import org.junit.Assert;
8+
import org.junit.Test;
9+
10+
import java.io.IOException;
11+
import java.net.InetSocketAddress;
12+
import java.util.Set;
13+
14+
public class Issue834Test {
15+
16+
@Test(timeout = 1000)
17+
public void testNoNewThreads() throws IOException {
18+
19+
Set<Thread> threadSet1 = Thread.getAllStackTraces().keySet();
20+
21+
new WebSocketServer(new InetSocketAddress(SocketUtil.getAvailablePort())) {
22+
@Override
23+
public void onOpen(WebSocket conn, ClientHandshake handshake) {
24+
}
25+
26+
@Override
27+
public void onClose(WebSocket conn, int code, String reason, boolean remote) {
28+
}
29+
30+
@Override
31+
public void onMessage(WebSocket conn, String message) {
32+
}
33+
34+
@Override
35+
public void onError(WebSocket conn, Exception ex) {
36+
}
37+
38+
@Override
39+
public void onStart() {
40+
}
41+
};
42+
43+
Set<Thread> threadSet2 = Thread.getAllStackTraces().keySet();
44+
45+
//checks that no threads are started in the constructor
46+
Assert.assertEquals(threadSet1, threadSet2);
47+
48+
}
49+
50+
}

0 commit comments

Comments
 (0)