xref: /aosp_15_r20/external/cronet/net/data/websocket/multiple-connections.html (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker<title>WebSocket is not subject to HTTP(S) connection limit</title>
2*6777b538SAndroid Build Coastguard Worker<script>
3*6777b538SAndroid Build Coastguard Workervar protocol = location.protocol.replace('http', 'ws');
4*6777b538SAndroid Build Coastguard Workervar url = protocol + '//' + location.host + '/echo-with-no-extension';
5*6777b538SAndroid Build Coastguard Worker
6*6777b538SAndroid Build Coastguard Workerconst SOCKETS_TO_OPEN = 255;
7*6777b538SAndroid Build Coastguard Worker
8*6777b538SAndroid Build Coastguard Worker// PARALLELISM limits the number of connections we try to open simultaneously.
9*6777b538SAndroid Build Coastguard Worker// This avoids triggering the throttling added in http://crrev.com/972963002,
10*6777b538SAndroid Build Coastguard Worker// which otherwise slows the test down considerably.
11*6777b538SAndroid Build Coastguard Workerconst PARALLELISM = 2;
12*6777b538SAndroid Build Coastguard Worker
13*6777b538SAndroid Build Coastguard Workervar created = 0;
14*6777b538SAndroid Build Coastguard Workervar connected = 0;
15*6777b538SAndroid Build Coastguard Worker
16*6777b538SAndroid Build Coastguard Workerfunction createNewWebSocket()
17*6777b538SAndroid Build Coastguard Worker{
18*6777b538SAndroid Build Coastguard Worker  var ws = new WebSocket(url);
19*6777b538SAndroid Build Coastguard Worker  ++created;
20*6777b538SAndroid Build Coastguard Worker
21*6777b538SAndroid Build Coastguard Worker  ws.onopen = function() {
22*6777b538SAndroid Build Coastguard Worker    if (created < SOCKETS_TO_OPEN) {
23*6777b538SAndroid Build Coastguard Worker      createNewWebSocket();
24*6777b538SAndroid Build Coastguard Worker    }
25*6777b538SAndroid Build Coastguard Worker    ++connected;
26*6777b538SAndroid Build Coastguard Worker    if (connected == SOCKETS_TO_OPEN) {
27*6777b538SAndroid Build Coastguard Worker      document.title = "PASS";
28*6777b538SAndroid Build Coastguard Worker    }
29*6777b538SAndroid Build Coastguard Worker  };
30*6777b538SAndroid Build Coastguard Worker  ws.onclose = function() {
31*6777b538SAndroid Build Coastguard Worker    document.title = "FAIL";
32*6777b538SAndroid Build Coastguard Worker  };
33*6777b538SAndroid Build Coastguard Worker}
34*6777b538SAndroid Build Coastguard Worker
35*6777b538SAndroid Build Coastguard Workerfor (var i = 0; i < PARALLELISM; ++i) {
36*6777b538SAndroid Build Coastguard Worker  createNewWebSocket();
37*6777b538SAndroid Build Coastguard Worker}
38*6777b538SAndroid Build Coastguard Worker</script>
39