diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..717863a0e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,34 @@
+---
+name: Bug report
+about: Create a report to help us improve
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. .
+2. ..
+3. ...
+4. ....
+
+**Example application to reproduce the issue**
+A link to a github project/gist to reproduce the issue.
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Debug log**
+The the debug log (set the log level to `TRACE`) to help explain your problem.
+
+**Environment(please complete the following information):**
+ - Version used:
+ - Java version:
+ - Operating System and version:
+ - Endpoint Name and version:
+ - Link to your project:
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 000000000..1fe59490f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,17 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or links about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
new file mode 100644
index 000000000..887c4f032
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -0,0 +1,14 @@
+---
+name: Question
+about: Question on how to use or achieve something
+
+---
+
+**Describe what you would like to know or do**
+A clear and concise description of what the problem is.
+
+**Describe the solution you'd considered**
+A clear and concise description of any solutions you've considered.
+
+**Additional context**
+Add any other context or links about the question here.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..8990a2a23
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,33 @@
+
+
+## Description
+
+
+## Related Issue
+
+
+
+
+
+## Motivation and Context
+
+
+## How Has This Been Tested?
+
+
+
+
+## Types of changes
+
+- [ ] Bug fix (non-breaking change which fixes an issue)
+- [ ] New feature (non-breaking change which adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to change)
+
+## Checklist:
+
+
+- [ ] My code follows the code style of this project.
+- [ ] My change requires a change to the documentation.
+- [ ] I have updated the documentation accordingly.
+- [ ] I have added tests to cover my changes.
+- [ ] All new and existing tests passed.
diff --git a/.github/workflows/checkstyle.yml b/.github/workflows/checkstyle.yml
new file mode 100644
index 000000000..197b3f3aa
--- /dev/null
+++ b/.github/workflows/checkstyle.yml
@@ -0,0 +1,21 @@
+# This workflow will build a Java project with Maven
+# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
+
+name: Java Code Style Check with Maven
+
+on: [push, pull_request]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - name: Code Style Check
+ run: mvn -B checkstyle:check --file pom.xml
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 000000000..145292c6c
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,33 @@
+name: Continuous Integration
+
+on: [push, pull_request]
+
+jobs:
+ Build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - name: Maven Version
+ run: mvn --version
+ - name: Build
+ run: mvn -DskipTests package --file pom.xml
+
+ Test:
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - name: Maven Version
+ run: mvn --version
+ - name: Test
+ run: mvn test --file pom.xml
diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml
new file mode 100644
index 000000000..538a5665b
--- /dev/null
+++ b/.github/workflows/sonar.yml
@@ -0,0 +1,35 @@
+name: SonarQube
+on:
+ push:
+ branches:
+ - master
+jobs:
+ build:
+ name: SonarQube
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - name: Cache SonarCloud packages
+ uses: actions/cache@v1
+ with:
+ path: ~/.sonar/cache
+ key: ${{ runner.os }}-sonar
+ restore-keys: ${{ runner.os }}-sonar
+ - name: Cache Maven packages
+ uses: actions/cache@v1
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+ - name: Build and analyze
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
+ SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+ run: mvn -B org.jacoco:jacoco-maven-plugin:prepare-agent install org.jacoco:jacoco-maven-plugin:report verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dmaven.test.failure.ignore=true
diff --git a/.gitignore b/.gitignore
index d7e41aae5..845b9273d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,4 +13,8 @@ target
.classpath
bin
-/doc
\ No newline at end of file
+/doc
+*.xml
+.idea/.name
+lib/junit-4.7.jar
+*.jar
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 067c53e42..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: java
-jdk:
- - oraclejdk7
-
-script: "./gradlew test"
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000..6dfbb71ca
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,452 @@
+# Change log
+
+###############################################################################
+## Version Release 1.6.0 (2024/12/15)
+
+#### Breaking Changes
+
+* [Issue 1434](https://github.com/TooTallNate/Java-WebSocket/issues/1434) - Drop Java 1.7 support ([PR 1435](https://github.com/TooTallNate/Java-WebSocket/pull/1435))
+* [PR 1435](https://github.com/TooTallNate/Java-WebSocket/pull/1435) - Drop support for Java 1.7
+
+#### Bugs Fixed
+
+* [Issue 1437](https://github.com/TooTallNate/Java-WebSocket/issues/1437) - Question: How can the compression threshold be set for the PerMessageDeflateExtension in a Deflate Client? ([PR 1439](https://github.com/TooTallNate/Java-WebSocket/pull/1439))
+* [Issue 1400](https://github.com/TooTallNate/Java-WebSocket/issues/1400) - PerMessageDeflateExtension#setDeflater()/#setInflater() is overwritten in case of no_context_takeover ([PR 1439](https://github.com/TooTallNate/Java-WebSocket/pull/1439))
+* [PR 1439](https://github.com/TooTallNate/Java-WebSocket/pull/1439) - Clone PerMessageDeflateExtension values correctly
+
+#### New Features
+
+* [Issue 1440](https://github.com/TooTallNate/Java-WebSocket/issues/1440) - Support for inherited sockets ([PR 1442](https://github.com/TooTallNate/Java-WebSocket/pull/1442))
+* [PR 1442](https://github.com/TooTallNate/Java-WebSocket/pull/1442) - Socket activation
+
+In this release 4 issues and 3 pull requests were closed.
+
+###############################################################################
+## Version Release 1.5.7 (2024/07/08)
+
+#### Breaking Changes
+
+* [PR 1399](https://github.com/TooTallNate/Java-WebSocket/pull/1399) - Have connectBlocking clean up after a timeout
+
+#### Bugs Fixed
+
+* [PR 1419](https://github.com/TooTallNate/Java-WebSocket/pull/1419) - Fix issue #1418: WebSocketServer sometimes misses GET request after SSL handshake
+
+#### New Features
+
+* [PR 1407](https://github.com/TooTallNate/Java-WebSocket/pull/1407) - Allow setting custom TCP receive buffer size
+* [PR 1399](https://github.com/TooTallNate/Java-WebSocket/pull/1399) - Have connectBlocking clean up after a timeout
+
+In this release 0 issues and 4 pull requests were closed.
+
+###############################################################################
+## Version Release 1.5.6 (2024/02/06)
+
+#### Bugs Fixed
+
+* [Issue 1382](https://github.com/TooTallNate/Java-WebSocket/issues/1382) - WebSocketClient.upgradeSocketToSSL is enforcing TLS 1.2 ([PR 1387](https://github.com/TooTallNate/Java-WebSocket/pull/1387))
+* [PR 1387](https://github.com/TooTallNate/Java-WebSocket/pull/1387) - Retrieve default SSL socket factory
+
+#### New Features
+
+* [Issue 1390](https://github.com/TooTallNate/Java-WebSocket/issues/1390) - Thread created by NamedThreadFactory should be a daemon ([PR 1391](https://github.com/TooTallNate/Java-WebSocket/pull/1391))
+* [PR 1391](https://github.com/TooTallNate/Java-WebSocket/pull/1391) - Provide way to start the client/server as daemons
+
+In this release 2 issues and 2 pull requests were closed.
+
+###############################################################################
+
+## Version Release 1.5.5 (2023/12/18)
+
+#### Bugs Fixed
+
+* [Issue 1365](https://github.com/TooTallNate/Java-WebSocket/issues/1365) - Hang on reconnectBlocking
+* [Issue 1364](https://github.com/TooTallNate/Java-WebSocket/issues/1364) - NPE during reconnect ([PR 1367](https://github.com/TooTallNate/Java-WebSocket/pull/1367))
+* [PR 1367](https://github.com/TooTallNate/Java-WebSocket/pull/1367) - Fix multiple issues related to reconnect
+
+In this release 2 issues and 1 pull request were closed.
+
+###############################################################################
+
+## Version Release 1.5.4 (2023/07/20)
+
+#### New Features
+
+* [Issue 1308](https://github.com/TooTallNate/Java-WebSocket/issues/1308) - Add support for Java modules ([PR 1309](https://github.com/TooTallNate/Java-WebSocket/pull/1309))
+* [PR 1309](https://github.com/TooTallNate/Java-WebSocket/pull/1309) - Add support for Java modules
+
+#### Refactoring
+
+* [PR 1259](https://github.com/TooTallNate/Java-WebSocket/pull/1259) - Replace usages of deprecated constructor Integer(String) with Integer.parseInt
+
+In this release 1 issue and 2 pull requests were closed.
+
+###############################################################################
+
+## Version Release 1.5.3 (2022/04/09)
+
+#### Bugs Fixed
+
+* [Issue 1230](https://github.com/TooTallNate/Java-WebSocket/issues/1230) - CONTINUOUS should be decoded depending on the first frame ([PR 1232 ](https://github.com/TooTallNate/Java-WebSocket/pull/1232) by [@marci4](https://github.com/marci4))
+* [Issue 1203](https://github.com/TooTallNate/Java-WebSocket/issues/1203) - Lost connection detection not working on delayed connect-Call ([PR 1204 ](https://github.com/TooTallNate/Java-WebSocket/pull/1204) by [@marci4](https://github.com/marci4))
+* [Issue 1164](https://github.com/TooTallNate/Java-WebSocket/issues/1164) - [Android & Node.js Server] Problem using PerMessageDeflateExtension with custom ping/pong messages ? ([PR 1165 ](https://github.com/TooTallNate/Java-WebSocket/pull/1165) by [@marci4](https://github.com/marci4))
+* [Issue 1160](https://github.com/TooTallNate/Java-WebSocket/issues/1160) - `WebSocketWorker` does not handle `Throwable` ([PR 1223 ](https://github.com/TooTallNate/Java-WebSocket/pull/1223) by [@Serpion-ua](https://github.com/Serpion-ua))
+* [Issue 1142](https://github.com/TooTallNate/Java-WebSocket/issues/1142) - Verifying server certificate ([PR 1143 ](https://github.com/TooTallNate/Java-WebSocket/pull/1143) by [@marci4](https://github.com/marci4))
+* [PR 1227](https://github.com/TooTallNate/Java-WebSocket/pull/1227) - Correct web socket closing, by [@Serpion-ua](https://github.com/Serpion-ua)
+* [PR 1223](https://github.com/TooTallNate/Java-WebSocket/pull/1223) - Issue-1160 Added java.lang.Error handling in WebSocketImpl and WebSocketServer, by [@Serpion-ua](https://github.com/Serpion-ua)
+* [PR 1212](https://github.com/TooTallNate/Java-WebSocket/pull/1212) - high cpu when channel close exception fix, by [@Adeptius](https://github.com/Adeptius)
+
+#### New Features
+
+* [PR 1185](https://github.com/TooTallNate/Java-WebSocket/pull/1185) - Added support unresolved socket addresses, by [@vtsykun](https://github.com/vtsykun)
+
+In this release 5 issues and 8 pull requests were closed.
+
+###############################################################################
+
+## Version Release 1.5.2 (2021/04/05)
+
+#### Bugs Fixed
+
+* [Issue 1132](https://github.com/TooTallNate/Java-WebSocket/issues/1132) - Draft_6455 flagged by Veracode CWE-331 replace Random with SecureRandom ([PR 1133 ](https://github.com/TooTallNate/Java-WebSocket/pull/1133) by [@marci4](https://github.com/marci4))
+* [Issue 1053](https://github.com/TooTallNate/Java-WebSocket/issues/1053) - It's an invalid check null with SEC_WEB_SOCKET_KEY . ([PR 1054 ](https://github.com/TooTallNate/Java-WebSocket/pull/1054) by [@dota17](https://github.com/dota17))
+* [Issue 1026](https://github.com/TooTallNate/Java-WebSocket/issues/1026) - Force client to use the valid schema ([PR 1025 ](https://github.com/TooTallNate/Java-WebSocket/pull/1025) by [@yindex](https://github.com/yindex))
+* [PR 1070](https://github.com/TooTallNate/Java-WebSocket/pull/1070) - Prioritise using provided socket factory when creating socket with proxy, by [@marci4](https://github.com/marci4)
+* [PR 1028](https://github.com/TooTallNate/Java-WebSocket/pull/1028) - Fixed typo in WebSocketClient.reset's error message, by [@alphaho](https://github.com/alphaho)
+* [PR 1018](https://github.com/TooTallNate/Java-WebSocket/pull/1018) - Added missing return character, by [@pawankgupta-se](https://github.com/pawankgupta-se)
+
+#### New Features
+
+* [Issue 1008](https://github.com/TooTallNate/Java-WebSocket/issues/1008) - Improve Sec-WebSocket-Protocol usability ([PR 1034 ](https://github.com/TooTallNate/Java-WebSocket/pull/1034) by [@marci4](https://github.com/marci4))
+
+#### Refactoring
+
+* [Issue 1050](https://github.com/TooTallNate/Java-WebSocket/issues/1050) - What about adding the CodeFormatterProfile.xml with the code format ? ([PR 1060 ](https://github.com/TooTallNate/Java-WebSocket/pull/1060) by [@dota17](https://github.com/dota17))
+* [PR 1072](https://github.com/TooTallNate/Java-WebSocket/pull/1072) - Improve code quality, by [@marci4](https://github.com/marci4)
+* [PR 1060](https://github.com/TooTallNate/Java-WebSocket/pull/1060) - Using Google Java Code Style To Reformat Code, by [@dota17](https://github.com/dota17)
+
+In this release 5 issues and 9 pull requests were closed.
+
+###############################################################################
+
+## Version Release 1.5.1 (2020/05/10)
+
+#### Bugs Fixed
+
+* [Issue 1011](https://github.com/TooTallNate/Java-WebSocket/issues/1011) - Crash on Android due to missing method `setEndpointIdentificationAlgorithm` on 1.5.0. ([PR 1014](https://github.com/TooTallNate/Java-WebSocket/pull/1014))
+
+In this release 1 issue and 1 pull request were closed.
+
+###############################################################################
+
+## Version Release 1.5.0 (2020/05/06)
+
+#### Breaking Changes
+
+This release requires API Level 1.7.
+
+#### Security
+
+This release contains a security fix for [CVE-2020-11050](https://nvd.nist.gov/vuln/detail/CVE-2020-11050).
+
+Take a look at the advisory [here](https://github.com/TooTallNate/Java-WebSocket/security/advisories/GHSA-gw55-jm4h-x339) for more information.
+
+#### New Features
+
+* [Issue 574](https://github.com/TooTallNate/Java-WebSocket/issues/574) - Implementation of per message deflate extension ([PR 866](https://github.com/TooTallNate/Java-WebSocket/pull/866))
+* [PR 866](https://github.com/TooTallNate/Java-WebSocket/pull/866) - Add PerMessageDeflate Extension support, see #574
+* [Issue 997](https://github.com/TooTallNate/Java-WebSocket/issues/997) - Access to SSLParameters used by the WebSocketClient ([PR 1000](https://github.com/TooTallNate/Java-WebSocket/pull/1000))
+* [Issue 574](https://github.com/TooTallNate/Java-WebSocket/issues/574) - Implementation of per message deflate extension ([PR 866](https://github.com/TooTallNate/Java-WebSocket/pull/866))
+* [PR 1001](https://github.com/TooTallNate/Java-WebSocket/pull/1001) - Allow user to specify max number of pending connections to a server
+* [PR 1000](https://github.com/TooTallNate/Java-WebSocket/pull/1000) - SSLParameters for WebSocketClient
+* [PR 866](https://github.com/TooTallNate/Java-WebSocket/pull/866) - Add PerMessageDeflate Extension support, see #574
+
+In this release 3 issues and 4 pull requests were closed.
+
+###############################################################################
+
+## Version Release 1.4.1 (2020/03/12)
+
+#### Bugs Fixed
+
+* [Issue 940](https://github.com/TooTallNate/Java-WebSocket/issues/940) - WebSocket handshake fails over WSS, if client uses TLS False Start ([PR 943](https://github.com/TooTallNate/Java-WebSocket/pull/943))
+* [Issue 921](https://github.com/TooTallNate/Java-WebSocket/issues/921) - ConcurrentModificationException when looping connections
+* [Issue 905](https://github.com/TooTallNate/Java-WebSocket/issues/905) - IOException wrapped in InternalError not handled properly ([PR 901](https://github.com/TooTallNate/Java-WebSocket/pull/901))
+* [Issue 900](https://github.com/TooTallNate/Java-WebSocket/issues/900) - OnClose is not called when client disconnect ([PR 914](https://github.com/TooTallNate/Java-WebSocket/pull/914))
+* [Issue 869](https://github.com/TooTallNate/Java-WebSocket/issues/869) - Lost connection detection is sensitive to changes in system time ([PR 878](https://github.com/TooTallNate/Java-WebSocket/pull/878))
+* [Issue 665](https://github.com/TooTallNate/Java-WebSocket/issues/665) - Data read with end of SSL handshake is discarded ([PR 943](https://github.com/TooTallNate/Java-WebSocket/pull/943))
+* [PR 943](https://github.com/TooTallNate/Java-WebSocket/pull/943) - Merge pull request #943 from da-als/master
+* [PR 922](https://github.com/TooTallNate/Java-WebSocket/pull/922) - Fix ConcurrentModificationException when iterating through connection
+* [PR 914](https://github.com/TooTallNate/Java-WebSocket/pull/914) - Merge pull request #914 from marci4/Issue900
+* [PR 902](https://github.com/TooTallNate/Java-WebSocket/pull/902) - ConcurrentModificationException when using broadcast
+* [PR 901](https://github.com/TooTallNate/Java-WebSocket/pull/901) - fix when proxy tunneling failed (IOException is hidden) JDK-8173
+* [PR 878](https://github.com/TooTallNate/Java-WebSocket/pull/878) - Replace TimerTask with ScheduledExecutorService
+
+#### New Features
+
+* [Issue 969](https://github.com/TooTallNate/Java-WebSocket/issues/969) - Loggers should be declared non-static ([PR 970](https://github.com/TooTallNate/Java-WebSocket/pull/970))
+* [Issue 962](https://github.com/TooTallNate/Java-WebSocket/issues/962) - Improvements in socket connect to server ([PR 964](https://github.com/TooTallNate/Java-WebSocket/pull/964))
+* [Issue 941](https://github.com/TooTallNate/Java-WebSocket/issues/941) - How to send customized ping message on connectionLostTimeout interval ([PR 944](https://github.com/TooTallNate/Java-WebSocket/pull/944))
+* [Issue 890](https://github.com/TooTallNate/Java-WebSocket/issues/890) - Would like to get SSLSession from WebSocket on server to examine client certificates ([PR 893](https://github.com/TooTallNate/Java-WebSocket/pull/893))
+* [Issue 865](https://github.com/TooTallNate/Java-WebSocket/issues/865) - Append new headers to the client when reconnecting
+* [Issue 859](https://github.com/TooTallNate/Java-WebSocket/issues/859) - Hot wo specify a custom DNS Resolver ([PR 906](https://github.com/TooTallNate/Java-WebSocket/pull/906))
+* [PR 971](https://github.com/TooTallNate/Java-WebSocket/pull/971) - Enabled OSGi metadata in MANIFST-MF for created JAR
+* [PR 964](https://github.com/TooTallNate/Java-WebSocket/pull/964) - Use socket isConnected() method rather than isBound()
+* [PR 944](https://github.com/TooTallNate/Java-WebSocket/pull/944) - Add ability to customize ping messages with custom data
+* [PR 906](https://github.com/TooTallNate/Java-WebSocket/pull/906) - Implemented a custom DNS resolver, see #859
+* [PR 893](https://github.com/TooTallNate/Java-WebSocket/pull/893) - Provide a way to access the SSLSession of a websocket instance
+* [PR 868](https://github.com/TooTallNate/Java-WebSocket/pull/868) - Add a way to put additional headers to handshake for connecting/reconnecting, see #865
+
+#### Refactoring
+
+* [Issue 907](https://github.com/TooTallNate/Java-WebSocket/issues/907) - build fails with Gradle 5+ ([PR 908](https://github.com/TooTallNate/Java-WebSocket/pull/908))
+* [Issue 869](https://github.com/TooTallNate/Java-WebSocket/issues/869) - Lost connection detection is sensitive to changes in system time ([PR 878](https://github.com/TooTallNate/Java-WebSocket/pull/878))
+* [PR 970](https://github.com/TooTallNate/Java-WebSocket/pull/970) - Made loggers non-static to support deployment in containers
+* [PR 931](https://github.com/TooTallNate/Java-WebSocket/pull/931) - Create new github actions
+* [PR 908](https://github.com/TooTallNate/Java-WebSocket/pull/908) - Remove outdated 'wrapper' task from build.gradle (#907)
+* [PR 878](https://github.com/TooTallNate/Java-WebSocket/pull/878) - Replace TimerTask with ScheduledExecutorService
+* [PR 874](https://github.com/TooTallNate/Java-WebSocket/pull/874) - Update dependencies
+
+In this release 14 issues and 17 pull requests were closed.
+
+## Version Release 1.4.0 (2019/02/19)
+
+#### Breaking Changes
+
+* [Issue 753](https://github.com/TooTallNate/Java-WebSocket/issues/753) - Breaking changes in 1.4
+* [Issue 670](https://github.com/TooTallNate/Java-WebSocket/issues/670) - Use a logging framework such as as SLF4J instead of System.out.println ([PR 754](https://github.com/TooTallNate/Java-WebSocket/pull/754))
+
+#### Bugs Fixed
+
+* [Issue 855](https://github.com/TooTallNate/Java-WebSocket/issues/855) - WebSocketServer cannot be started without .start() ([PR 856](https://github.com/TooTallNate/Java-WebSocket/pull/856))
+* [Issue 847](https://github.com/TooTallNate/Java-WebSocket/issues/847) - java.nio.BufferUnderflowException ([PR 849](https://github.com/TooTallNate/Java-WebSocket/pull/849))
+* [Issue 834](https://github.com/TooTallNate/Java-WebSocket/issues/834) - Workers should not be started before the server
+* [Issue 827](https://github.com/TooTallNate/Java-WebSocket/issues/827) - WebSocketClient close()
+* [Issue 784](https://github.com/TooTallNate/Java-WebSocket/issues/784) - Building with gradle fails
+* [Issue 773](https://github.com/TooTallNate/Java-WebSocket/issues/773) - Memory leak in WebSocketImpl.outQueue ([PR 781](https://github.com/TooTallNate/Java-WebSocket/pull/781))
+* [PR 856](https://github.com/TooTallNate/Java-WebSocket/pull/856) - Move the startup of the WebSocketWorker inside of run()
+* [PR 850](https://github.com/TooTallNate/Java-WebSocket/pull/850) - Fix issue #834 by starting WebSocketWorker of the WebSocketServer in the start function
+* [PR 849](https://github.com/TooTallNate/Java-WebSocket/pull/849) - Fix issue #847
+* [PR 846](https://github.com/TooTallNate/Java-WebSocket/pull/846) - Pass on exit code in WebSocketClient close function - fixes bug #827
+* [PR 824](https://github.com/TooTallNate/Java-WebSocket/pull/824) - Synchronize AbstractWebSocket
+* [PR 785](https://github.com/TooTallNate/Java-WebSocket/pull/785) - Update build.gradle
+* [PR 781](https://github.com/TooTallNate/Java-WebSocket/pull/781) - Null the reference of the WebSocketImpl
+* [PR 771](https://github.com/TooTallNate/Java-WebSocket/pull/771) - Test for 765
+* [PR 770](https://github.com/TooTallNate/Java-WebSocket/pull/770) - Use a SocketFactory to support reconnecting
+* [PR 769](https://github.com/TooTallNate/Java-WebSocket/pull/769) - Close WebSocketFactory when updated
+* [PR 757](https://github.com/TooTallNate/Java-WebSocket/pull/757) - -keyalg RSA is needed or you'll get SSLHandshakeException: no cipher …
+
+#### New Features
+
+* [Issue 845](https://github.com/TooTallNate/Java-WebSocket/issues/845) - Generate changelog.md ([PR 851](https://github.com/TooTallNate/Java-WebSocket/pull/851))
+* [Issue 838](https://github.com/TooTallNate/Java-WebSocket/issues/838) - Allow for two-way ssl(SSLEngine.setNeedClientAuth())
+* [Issue 670](https://github.com/TooTallNate/Java-WebSocket/issues/670) - Use a logging framework such as as SLF4J instead of System.out.println ([PR 754](https://github.com/TooTallNate/Java-WebSocket/pull/754))
+* [Issue 598](https://github.com/TooTallNate/Java-WebSocket/issues/598) - Memory Management ([PR 761](https://github.com/TooTallNate/Java-WebSocket/pull/761))
+* [PR 839](https://github.com/TooTallNate/Java-WebSocket/pull/839) - SSLEngineWebSocketServerFactory allows more customization
+* [PR 761](https://github.com/TooTallNate/Java-WebSocket/pull/761) - Implements Memory Management
+
+#### Refactoring
+
+* [Issue 845](https://github.com/TooTallNate/Java-WebSocket/issues/845) - Generate changelog.md ([PR 851](https://github.com/TooTallNate/Java-WebSocket/pull/851))
+* [Issue 819](https://github.com/TooTallNate/Java-WebSocket/issues/819) - Ant build removed on master ?
+* [Issue 784](https://github.com/TooTallNate/Java-WebSocket/issues/784) - Building with gradle fails
+* [Issue 753](https://github.com/TooTallNate/Java-WebSocket/issues/753) - Breaking changes in 1.4
+* [Issue 749](https://github.com/TooTallNate/Java-WebSocket/issues/749) - Improve code quality for 1.4.0
+* [PR 848](https://github.com/TooTallNate/Java-WebSocket/pull/848) - Removed unused/unrelated imports (including deprecated CORBA)
+* [PR 833](https://github.com/TooTallNate/Java-WebSocket/pull/833) - Fix some sonarqube errors
+* [PR 824](https://github.com/TooTallNate/Java-WebSocket/pull/824) - Synchronize AbstractWebSocket
+* [PR 821](https://github.com/TooTallNate/Java-WebSocket/pull/821) - Remove outdated build instructions from README
+* [PR 805](https://github.com/TooTallNate/Java-WebSocket/pull/805) - More improvement
+* [PR 789](https://github.com/TooTallNate/Java-WebSocket/pull/789) - WebSocketServer code quality
+* [PR 785](https://github.com/TooTallNate/Java-WebSocket/pull/785) - Update build.gradle
+* [PR 768](https://github.com/TooTallNate/Java-WebSocket/pull/768) - Fixed several issues related to the code quality
+* [PR 754](https://github.com/TooTallNate/Java-WebSocket/pull/754) - Using SLF4J and refactored code
+
+In this release 16 issues and 22 pull requests were closed.
+
+## Version Release 1.3.9 (2018-08-05)
+
+#### Bugs Fixed
+
+* [Issue 694](https://github.com/TooTallNate/Java-WebSocket/issues/694) - AssertionError at WebSocketImpl.isOpen
+* [Issue 685](https://github.com/TooTallNate/Java-WebSocket/issues/685) - Exclude default port from wss host ([PR 683](https://github.com/TooTallNate/Java-WebSocket/pull/683))
+* [PR 746](https://github.com/TooTallNate/Java-WebSocket/pull/746) - Fixed typo in Draft_6455
+* [PR 722](https://github.com/TooTallNate/Java-WebSocket/pull/722) - Catch exceptions in AbstractWebSocket
+* [PR 708](https://github.com/TooTallNate/Java-WebSocket/pull/708) - Enable and Disable ping/pong
+
+#### New Features
+
+* [Issue 711](https://github.com/TooTallNate/Java-WebSocket/issues/711) - broadcasting a ByteBuffer
+* [Issue 699](https://github.com/TooTallNate/Java-WebSocket/issues/699) - Enable and Disable ping/pong
+* [PR 738](https://github.com/TooTallNate/Java-WebSocket/pull/738) - Adjust readme
+* [PR 737](https://github.com/TooTallNate/Java-WebSocket/pull/737) - Prepare for automatic snapshot deploy
+* [PR 724](https://github.com/TooTallNate/Java-WebSocket/pull/724) - added a timeout option for connectBlocking
+* [PR 712](https://github.com/TooTallNate/Java-WebSocket/pull/712) - Added a broadcast method for ByteBuffers
+* [PR 708](https://github.com/TooTallNate/Java-WebSocket/pull/708) - Enable and Disable ping/pong
+
+#### Refactoring
+
+* [PR 739](https://github.com/TooTallNate/Java-WebSocket/pull/739) - Exception when using reconnect in websocket thread
+* [PR 736](https://github.com/TooTallNate/Java-WebSocket/pull/736) - Change example section
+* [PR 733](https://github.com/TooTallNate/Java-WebSocket/pull/733) - Remove static from synchronize object
+* [PR 702](https://github.com/TooTallNate/Java-WebSocket/pull/702) - Removed assertion from WebSocketImpl.isOpen (see #694)
+* [PR 682](https://github.com/TooTallNate/Java-WebSocket/pull/682) - Deprecate Connecting and additional tests
+
+In this release 4 issues and 13 pull requests were closed.
+
+## Version Release 1.3.8 (2018-03-05)
+
+#### Bugs Fixed
+
+* [Issue 668](https://github.com/TooTallNate/Java-WebSocket/issues/668) - When a server fails to start it does not cleanup its WebSocketWorker threads
+* [PR 662](https://github.com/TooTallNate/Java-WebSocket/pull/662) - NPE on already bound port
+
+#### New Features
+
+* [Issue 256](https://github.com/TooTallNate/Java-WebSocket/issues/256) - how to reconnect websocket ([PR 654](https://github.com/TooTallNate/Java-WebSocket/pull/654))
+* [PR 654](https://github.com/TooTallNate/Java-WebSocket/pull/654) - WebSocketClient supports reconnecting
+* [PR 651](https://github.com/TooTallNate/Java-WebSocket/pull/651) - Support for close code 1012-1014
+
+#### Refactoring
+
+* [Issue 669](https://github.com/TooTallNate/Java-WebSocket/issues/669) - Include information in the onClose call for the connection lost detection ([PR 671](https://github.com/TooTallNate/Java-WebSocket/pull/671))
+* [Issue 666](https://github.com/TooTallNate/Java-WebSocket/issues/666) - Give the main WebSocketClient thread and AbstractWebSocket Timer a name ([PR 667](https://github.com/TooTallNate/Java-WebSocket/pull/667))
+* [PR 675](https://github.com/TooTallNate/Java-WebSocket/pull/675) - Change thread name
+* [PR 671](https://github.com/TooTallNate/Java-WebSocket/pull/671) - Include reason for dc due to lost connection detection
+* [PR 667](https://github.com/TooTallNate/Java-WebSocket/pull/667) - Give all threads a custom name
+
+In this release 4 issues and 6 pull requests were closed.
+
+## Version Release 1.3.7 (2017-12-11)
+
+#### Bugs Fixed
+
+* [Issue 621](https://github.com/TooTallNate/Java-WebSocket/issues/621) - conn.close() in server's onOpen method causes null pointer exception ([PR 622](https://github.com/TooTallNate/Java-WebSocket/pull/622))
+* [Issue 620](https://github.com/TooTallNate/Java-WebSocket/issues/620) - Investigate cause for #580 ([PR 628](https://github.com/TooTallNate/Java-WebSocket/pull/628))
+* [Issue 609](https://github.com/TooTallNate/Java-WebSocket/issues/609) - A connection will be in readystate Open when onWebSocketClose is called ([PR 610](https://github.com/TooTallNate/Java-WebSocket/pull/610))
+* [Issue 606](https://github.com/TooTallNate/Java-WebSocket/issues/606) - WebsocketNotConnectedException in Timer-0 ping
+* [PR 628](https://github.com/TooTallNate/Java-WebSocket/pull/628) - Graceful shutdown on stop()
+* [PR 622](https://github.com/TooTallNate/Java-WebSocket/pull/622) - Fix for #621
+* [PR 610](https://github.com/TooTallNate/Java-WebSocket/pull/610) - Check if connection is open on sendPing & change readystate on closeConnection
+
+#### New Features
+
+* [Issue 608](https://github.com/TooTallNate/Java-WebSocket/issues/608) - Sec-WebSocket-Protocol header not supported ([PR 614](https://github.com/TooTallNate/Java-WebSocket/pull/614))
+* [PR 627](https://github.com/TooTallNate/Java-WebSocket/pull/627) - Added setAttachment and getAttachment to WebSocket interface
+* [PR 614](https://github.com/TooTallNate/Java-WebSocket/pull/614) - Protocol
+
+#### Refactoring
+
+* [PR 635](https://github.com/TooTallNate/Java-WebSocket/pull/635) - Mark AbstractClientProxyChannel as deprecated
+* [PR 614](https://github.com/TooTallNate/Java-WebSocket/pull/614) - Protocol
+* [PR 610](https://github.com/TooTallNate/Java-WebSocket/pull/610) - Check if connection is open on sendPing & change readystate on closeConnection
+
+In this release 5 issues and 8 pull requests were closed.
+
+## Version Release 1.3.6 (2017-11-09)
+
+#### Bugs Fixed
+
+* [Issue 579](https://github.com/TooTallNate/Java-WebSocket/issues/579) - Exception with sending ping without server access
+* [PR 603](https://github.com/TooTallNate/Java-WebSocket/pull/603) - Check for sending a close frame
+
+#### Refactoring
+
+* [Issue 577](https://github.com/TooTallNate/Java-WebSocket/issues/577) - Improve onClose behaviour on client side
+* [PR 597](https://github.com/TooTallNate/Java-WebSocket/pull/597) - Code cleanups
+* [PR 596](https://github.com/TooTallNate/Java-WebSocket/pull/596) - Improved OpeningHandshakeRejection test
+* [PR 591](https://github.com/TooTallNate/Java-WebSocket/pull/591) - Adjusted examples
+* [PR 589](https://github.com/TooTallNate/Java-WebSocket/pull/589) - Include whole invalid status line
+* [PR 578](https://github.com/TooTallNate/Java-WebSocket/pull/578) - Refactoring and improved onClose behaviour
+
+In this release 2 issues and 6 pull requests were closed.
+
+## Version Release 1.3.5 (2017-10-13)
+
+#### Bugs Fixed
+
+* [Issue 564](https://github.com/TooTallNate/Java-WebSocket/issues/564) - Continuous binary getting swallowed? ([PR 570](https://github.com/TooTallNate/Java-WebSocket/pull/570))
+* [Issue 530](https://github.com/TooTallNate/Java-WebSocket/issues/530) - onWebsocketHandshakeReceivedAsServer throwing InvalidDataException has no effect
+* [Issue 512](https://github.com/TooTallNate/Java-WebSocket/issues/512) - AssertionError in WebSocketServer.removeConnection
+* [Issue 508](https://github.com/TooTallNate/Java-WebSocket/issues/508) - Ant fails due to missing `dist/` directory
+* [Issue 504](https://github.com/TooTallNate/Java-WebSocket/issues/504) - Clean up connections after connection closed
+* [Issue 390](https://github.com/TooTallNate/Java-WebSocket/issues/390) - Websocket server returning 401; can't handle on client side
+* [PR 506](https://github.com/TooTallNate/Java-WebSocket/pull/506) - Connections dont always get cleaned up after lost connection
+
+#### New Features
+
+* [Issue 528](https://github.com/TooTallNate/Java-WebSocket/issues/528) - so_reuseaddr
+* [Issue 463](https://github.com/TooTallNate/Java-WebSocket/issues/463) - Support for Compression Extensions for WebSocket
+* [PR 529](https://github.com/TooTallNate/Java-WebSocket/pull/529) - Added setter for SO_REUSEADDR
+* [PR 510](https://github.com/TooTallNate/Java-WebSocket/pull/510) - Add true WSS support to WebSocketClient
+
+#### Refactoring
+
+* [Issue 545](https://github.com/TooTallNate/Java-WebSocket/issues/545) - java.io.IOException: Broken pipe
+* [Issue 539](https://github.com/TooTallNate/Java-WebSocket/issues/539) - Improve memory usage
+* [Issue 516](https://github.com/TooTallNate/Java-WebSocket/issues/516) - Improve handling of IOExceptions causing eot()
+* [PR 558](https://github.com/TooTallNate/Java-WebSocket/pull/558) - Code cleanups
+* [PR 553](https://github.com/TooTallNate/Java-WebSocket/pull/553) - Removal of deprecated drafts
+* [PR 510](https://github.com/TooTallNate/Java-WebSocket/pull/510) - Add true WSS support to WebSocketClient
+* [PR 500](https://github.com/TooTallNate/Java-WebSocket/pull/500) - Making WebSocket.send() thread-safe
+
+In this release 11 issues and 7 pull requests were closed.
+
+## Version Release 1.3.4 (2017-06-02)
+
+#### Breaking Changes
+
+* [Issue 478](https://github.com/TooTallNate/Java-WebSocket/issues/478) - Draft_10, Draft_17, Draft_75 and Draft_76 are now deprecated
+
+#### Bugs Fixed
+
+* [Issue 484](https://github.com/TooTallNate/Java-WebSocket/issues/484) - Problems with WSS running on linux and Edge(or ie) browser
+* [Issue 481](https://github.com/TooTallNate/Java-WebSocket/issues/481) - No Javadoc attached when using from Gradle
+* [Issue 473](https://github.com/TooTallNate/Java-WebSocket/issues/473) - Improve lost connection detection
+* [Issue 466](https://github.com/TooTallNate/Java-WebSocket/issues/466) - Instability on WSS Connections, only works when one client abandon connection
+* [Issue 465](https://github.com/TooTallNate/Java-WebSocket/issues/465) - Bad rsv 4 on android
+* [Issue 294](https://github.com/TooTallNate/Java-WebSocket/issues/294) - Issue in SSL implementation : protocole ws:// is always use in Draft_76.java
+* [Issue 222](https://github.com/TooTallNate/Java-WebSocket/issues/222) - Worker threads do not close if bind() fails
+* [Issue 120](https://github.com/TooTallNate/Java-WebSocket/issues/120) - Closing wss connections might not work as expected
+* [PR 477](https://github.com/TooTallNate/Java-WebSocket/pull/477) - Fix for #222
+* [PR 472](https://github.com/TooTallNate/Java-WebSocket/pull/472) - Fix for #466
+* [PR 470](https://github.com/TooTallNate/Java-WebSocket/pull/470) - Fix #465
+
+#### New Features
+
+* [PR 497](https://github.com/TooTallNate/Java-WebSocket/pull/497) - Added new AutobahnServerTest for SSL and fixed errors in closeframe
+* [PR 493](https://github.com/TooTallNate/Java-WebSocket/pull/493) - Clear implementations for frames and SSLWebsocketServerFactory
+* [PR 489](https://github.com/TooTallNate/Java-WebSocket/pull/489) - Possibility to override worker thread allocation logic in WebSocketSe…
+* [PR 487](https://github.com/TooTallNate/Java-WebSocket/pull/487) - Example for LetsEncrypt
+* [PR 483](https://github.com/TooTallNate/Java-WebSocket/pull/483) - Introduction of Draft_6455
+* [PR 480](https://github.com/TooTallNate/Java-WebSocket/pull/480) - Lostconnection
+
+#### Refactoring
+
+* [Issue 473](https://github.com/TooTallNate/Java-WebSocket/issues/473) - Improve lost connection detection
+* [Issue 222](https://github.com/TooTallNate/Java-WebSocket/issues/222) - Worker threads do not close if bind() fails
+* [PR 493](https://github.com/TooTallNate/Java-WebSocket/pull/493) - Clear implementations for frames and SSLWebsocketServerFactory
+* [PR 488](https://github.com/TooTallNate/Java-WebSocket/pull/488) - New SSLSocketChannel
+* [PR 486](https://github.com/TooTallNate/Java-WebSocket/pull/486) - ByteBuffer and JUnitTests
+* [PR 483](https://github.com/TooTallNate/Java-WebSocket/pull/483) - Introduction of Draft_6455
+* [PR 480](https://github.com/TooTallNate/Java-WebSocket/pull/480) - Lostconnection
+* [PR 469](https://github.com/TooTallNate/Java-WebSocket/pull/469) - Cleanups & JavaDocs
+
+In this release 11 issues and 15 pull requests were closed.
+
+## Version Release 1.3.3 (2017-04-26)
+
+#### Bugs Fixed
+
+* [Issue 458](https://github.com/TooTallNate/Java-WebSocket/issues/458) - 100% cpu when using SSL
+* [Issue 362](https://github.com/TooTallNate/Java-WebSocket/issues/362) - race problem when starting server with port 0
+* [Issue 302](https://github.com/TooTallNate/Java-WebSocket/issues/302) - Client blocking connect and close methods return too soon
+
+#### New Features
+
+* [Issue 452](https://github.com/TooTallNate/Java-WebSocket/issues/452) - Unable to verify hostname after handshake
+* [Issue 339](https://github.com/TooTallNate/Java-WebSocket/issues/339) - setTCPNoDelay inaccessible
+* [Issue 271](https://github.com/TooTallNate/Java-WebSocket/issues/271) - There is no notification for websocket server success start
+* [PR 462](https://github.com/TooTallNate/Java-WebSocket/pull/462) - Make TCP_NODELAY accessible
+
+In this release 6 issues and 1 pull request were closed.
diff --git a/LICENSE b/LICENSE
index 5a93449e0..bc4515cc6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
- Copyright (c) 2010-2012 Nathan Rajlich
+ Copyright (c) 2010-2020 Nathan Rajlich
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
diff --git a/README.markdown b/README.markdown
index 88349fa48..75607d3a2 100644
--- a/README.markdown
+++ b/README.markdown
@@ -1,74 +1,65 @@
-[](https://travis-ci.org/ck1125/Java-WebSocket)
Java WebSockets
===============
+[](https://www.javadoc.io/doc/org.java-websocket/Java-WebSocket)
+[](https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket)
This repository contains a barebones WebSocket server and client implementation
written in 100% Java. The underlying classes are implemented `java.nio`, which allows for a
non-blocking event-driven model (similar to the
-[WebSocket API](http://dev.w3.org/html5/websockets/) for web browsers).
+[WebSocket API](https://html.spec.whatwg.org/multipage/web-sockets.html) for web browsers).
Implemented WebSocket protocol versions are:
* [RFC 6455](http://tools.ietf.org/html/rfc6455)
- * [Hybi 17](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-17.txt)
- * [Hybi 10](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-10.txt)
- * [Hixie 76](http://tools.ietf.org/id/draft-hixie-thewebsocketprotocol-76.txt)
- * [Hixie 75](http://tools.ietf.org/id/draft-hixie-thewebsocketprotocol-75.txt)
+ * [RFC 7692](http://tools.ietf.org/html/rfc7692)
-[Here](https://github.com/TooTallNate/Java-WebSocket/wiki/Drafts) some more details about protocol versions/drafts.
+[Here](https://github.com/TooTallNate/Java-WebSocket/wiki/Drafts) some more details about protocol versions/drafts.
+[PerMessageDeflateExample](https://github.com/TooTallNate/Java-WebSocket/wiki/PerMessageDeflateExample) enable the extension with reference to both a server and client example.
-##Build
-You can build using Ant or Maven but there is nothing against just putting the source path ```src/main/java ``` on your applications buildpath.
+## Getting Started
-###Ant
+### Dependency management tools
-``` bash
-ant
-```
-
-will create the javadoc of this library at ```doc/``` and build the library itself: ```dest/java_websocket.jar```
-
-The ant targets are: ```compile```, ```jar```, ```doc``` and ```clean```
+Below is a brief guide to using dependency management tools like maven or gradle.
-###Maven
-
-To use maven just add this dependency to your pom.xml:
+#### Maven
+To use maven add this dependency to your pom.xml:
```xml
If you do not have a valid **certificate** in place then you will have to create a self signed one.
Browsers will simply refuse the connection in case of a bad certificate and will not ask the user to accept it.
So the first step will be to make a browser to accept your self signed certificate. ( https://bugzilla.mozilla.org/show_bug.cgi?id=594502 ).
-If the websocket server url is `wss://localhost:8000` visit the url `https://localhost:8000` with your browser. The browser will recognize the handshake and allow you to accept the certificate. This technique is also demonstrated in this [video](http://www.youtube.com/watch?v=F8lBdfAZPkU).
+If the websocket server url is `wss://localhost:8000` visit the url `https://localhost:8000` with your browser. The browser will recognize the handshake and allow you to accept the certificate.
The vm option `-Djavax.net.debug=all` can help to find out if there is a problem with the certificate.
It is currently not possible to accept ws and wss connections at the same time via the same websocket server instance.
-For some reason firefox does not allow multible connections to the same wss server if the server uses a different port than the default port(443).
-
+For some reason Firefox does not allow multiple connections to the same wss server if the server uses a different port than the default port (443).
-If you want to use `wss` on the android platfrom you should take a look at [this](http://blog.antoine.li/2010/10/22/android-trusting-ssl-certificates/).
+If you want to use `wss` on the android platform you should take a look at [this](https://github.com/TooTallNate/Java-WebSocket/wiki/FAQ:-Secure-WebSockets#wss-on-android).
I ( @Davidiusdadi ) would be glad if you would give some feedback whether wss is working fine for you or not.
@@ -115,47 +113,10 @@ Minimum Required JDK
`Java-WebSocket` is known to work with:
- * Java 1.5 (aka SE 6)
- * Android 1.6 (API 4)
+ * Java 8 and higher
Other JRE implementations may work as well, but haven't been tested.
-
-Testing in Android Emulator
----------------------------
-
-Please note Android Emulator has issues using `IPv6 addresses`. Executing any
-socket related code (like this library) inside it will address an error
-
-``` bash
-java.net.SocketException: Bad address family
-```
-
-You have to manually disable `IPv6` by calling
-
-``` java
-java.lang.System.setProperty("java.net.preferIPv6Addresses", "false");
-java.lang.System.setProperty("java.net.preferIPv4Stack", "true");
-```
-
-somewhere in your project, before instantiating the `WebSocketClient` class.
-You can check if you are currently testing in the Android Emulator like this
-
-``` java
-if ("google_sdk".equals( Build.PRODUCT )) {
- // ... disable IPv6
-}
-```
-
-
-Getting Support
----------------
-
-If you are looking for help using `Java-WebSocket` you might want to check out the
-[#java-websocket](http://webchat.freenode.net/?channels=java-websocket) IRC room
-on the FreeNode IRC network.
-
-
License
-------
diff --git a/autobahn reports/servers/index.html b/autobahn reports/servers/index.html
index a5d20b2b4..d9056d0b3 100644
--- a/autobahn reports/servers/index.html
+++ b/autobahn reports/servers/index.html
@@ -206,6 +206,11 @@
text-align: center;
}
+td.case_unimplemented {
+ background-color: #800080;
+ text-align: center;
+}
+
td.case_failed {
background-color: #900;
text-align: center;
@@ -283,10 +288,10 @@
-

Summary report generated on 2012-02-04T15:47:22Z (UTC) by Autobahn WebSockets v0.4.10.
+Summary report generated on 2017-04-13T14:56:18.388Z (UTC) by Autobahn WebSocket Testsuite v0.7.6/v0.10.9.
| 1 Framing | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 1.1 Text Messages | |||||
| Case 1.1.1 | -Pass | None | +Pass | 1000 | |
| Case 1.1.2 | -Pass | None | +Pass | 1000 | |
| Case 1.1.3 | -Pass | None | +Pass | 1000 | |
| Case 1.1.4 | -Pass | None | +Pass | 1000 | |
| Case 1.1.5 | -Pass | None | +Pass | 1000 | |
| Case 1.1.6 | -Pass | None | +Pass | 1000 | |
| Case 1.1.7 | -Pass | None | +Pass | 1000 | |
| Case 1.1.8 | -Pass | None | +Pass | 1000 | |
| 1 Framing | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 1.2 Binary Messages | |||||
| Case 1.2.1 | -Pass | None | +Pass | 1000 | |
| Case 1.2.2 | -Pass | None | +Pass | 1000 | |
| Case 1.2.3 | -Pass | None | +Pass | 1000 | |
| Case 1.2.4 | -Pass | None | +Pass | 1000 | |
| Case 1.2.5 | -Pass | None | +Pass | 1000 | |
| Case 1.2.6 | -Pass | None | +Pass | 1000 | |
| Case 1.2.7 | -Pass | None | +Pass | 1000 | |
| Case 1.2.8 | -Pass | None | +Pass | 1000 | |
| 2 Pings/Pongs | -tootallnate/websocket | +TooTallNateWebsocket | |||
| Case 2.1 | -Pass | None | +Pass | 1000 | |
| Case 2.2 | -Pass | None | +Pass | 1000 | |
| Case 2.3 | -Pass | None | +Pass | 1000 | |
| Case 2.4 | -Pass | None | +Pass | 1000 | |
| Case 2.5 | -Pass | None | +Pass | 1002 | |
| Case 2.6 | -Pass | None | +Pass | 1000 | |
| Case 2.7 | -Pass | None | +Pass | 1000 | |
| Case 2.8 | -Pass | None | +Pass | 1000 | |
| Case 2.9 | -Pass | None | +Pass | 1000 | |
| Case 2.10 | -Pass | None | +Pass | 1000 | |
| Case 2.11 | -Pass | None | +Pass | 1000 | |
| 3 Reserved Bits | -tootallnate/websocket | +TooTallNateWebsocket | |||
| Case 3.1 | -Pass | None | +Pass | 1002 | |
| Case 3.2 | -Non-Strict | None | +Non-Strict | 1002 | |
| Case 3.3 | -Pass | None | +Pass | 1002 | |
| Case 3.4 | -Pass | None | +Pass | 1002 | |
| Case 3.5 | -Pass | None | +Pass | 1002 | |
| Case 3.6 | -Pass | None | +Pass | 1002 | |
| Case 3.7 | -Pass | None | +Pass | 1002 | |
| 4 Opcodes | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 4.1 Non-control Opcodes | |||||
| Case 4.1.1 | -Pass | None | +Pass | 1002 | |
| Case 4.1.2 | -Pass | None | +Pass | 1002 | |
| Case 4.1.3 | -Non-Strict | None | +Non-Strict | 1002 | |
| Case 4.1.4 | -Non-Strict | None | +Non-Strict | 1002 | |
| Case 4.1.5 | -Pass | None | +Pass | 1002 | |
| 4 Opcodes | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 4.2 Control Opcodes | |||||
| Case 4.2.1 | -Pass | None | +Pass | 1002 | |
| Case 4.2.2 | -Pass | None | +Pass | 1002 | |
| Case 4.2.3 | -Non-Strict | None | +Non-Strict | 1002 | |
| Case 4.2.4 | -Non-Strict | None | +Non-Strict | 1002 | |
| Case 4.2.5 | -Pass | None | +Pass | 1002 | |
| 5 Fragmentation | -tootallnate/websocket | +TooTallNateWebsocket | |||
| Case 5.1 | -Pass | None | +Pass | 1002 | |
| Case 5.2 | -Pass | None | +Pass | 1002 | |
| Case 5.3 | -Pass | None | +Pass | 1000 | |
| Case 5.4 | -Pass | None | +Pass | 1000 | |
| Case 5.5 | -Pass | None | +Pass | 1000 | |
| Case 5.6 | -Pass | None | +Pass | 1000 | |
| Case 5.7 | -Pass | None | +Pass | 1000 | |
| Case 5.8 | -Pass | None | +Pass | 1000 | |
| Case 5.9 | -Pass | None | +Pass | 1002 | |
| Case 5.10 | -Pass | None | +Pass | 1002 | |
| Case 5.11 | -Pass | None | +Pass | 1002 | |
| Case 5.12 | -Pass | None | +Pass | 1002 | |
| Case 5.13 | -Pass | None | +Pass | 1002 | |
| Case 5.14 | -Pass | None | +Pass | 1002 | |
| Case 5.15 | -Pass | None | +Pass | 1002 | |
| Case 5.16 | -Pass | None | +Pass | 1002 | |
| Case 5.17 | -Pass | None | +Pass | 1002 | |
| Case 5.18 | -Pass | None | +Pass | 1002 | |
| Case 5.19 | -Pass | None | +Pass | 1000 | |
| Case 5.20 | -Pass | None | +Pass | 1000 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.1 Valid UTF-8 with zero payload fragments | |||||
| Case 6.1.1 | -Pass | None | +Pass | 1000 | |
| Case 6.1.2 | -Pass | None | +Pass | 1000 | |
| Case 6.1.3 | -Pass | None | +Pass | 1000 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.2 Valid UTF-8 unfragmented, fragmented on code-points and within code-points | |||||
| Case 6.2.1 | -Pass | None | +Pass | 1000 | |
| Case 6.2.2 | -Pass | None | +Pass | 1000 | |
| Case 6.2.3 | -Pass | None | +Pass | 1000 | |
| Case 6.2.4 | -Pass | None | +Pass | 1000 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.3 Invalid UTF-8 differently fragmented | |||||
| Case 6.3.1 | -Fail | Fail | +Pass | 1007 | |
| Case 6.3.2 | -Fail | Fail | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.4 Fail-fast on invalid UTF-8 | |||||
| Case 6.4.1 | -Non-Strict | None | +Pass | 1007 | |
| Case 6.4.2 | -Non-Strict | None | +Pass | 1007 | |
| Case 6.4.3 | -Non-Strict | None | +Non-Strict | 1007 | |
| Case 6.4.4 | -Non-Strict | None | +Non-Strict | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.5 Some valid UTF-8 sequences | |||||
| Case 6.5.1 | -Pass | None | +Pass | 1000 | +|
| Case 6.5.2 | +Pass | 1000 | +|||
| Case 6.5.3 | +Pass | 1000 | +|||
| Case 6.5.4 | +Pass | 1000 | +|||
| Case 6.5.5 | +Pass | 1000 | |||
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.6 All prefixes of a valid UTF-8 string that contains multi-byte code points | |||||
| Case 6.6.1 | -Pass | None | +Pass | 1007 | |
| Case 6.6.2 | -Pass | None | +Pass | 1000 | |
| Case 6.6.3 | -Pass | None | +Pass | 1007 | |
| Case 6.6.4 | -Pass | None | +Pass | 1007 | |
| Case 6.6.5 | -Pass | None | +Pass | 1000 | |
| Case 6.6.6 | -Pass | None | +Pass | 1007 | |
| Case 6.6.7 | -Pass | None | +Pass | 1000 | |
| Case 6.6.8 | -Pass | None | +Pass | 1007 | |
| Case 6.6.9 | -Pass | None | +Pass | 1000 | |
| Case 6.6.10 | -Pass | None | +Pass | 1007 | |
| Case 6.6.11 | -Pass | None | +Pass | 1000 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.7 First possible sequence of a certain length | |||||
| Case 6.7.1 | -Pass | None | +Pass | 1000 | |
| Case 6.7.2 | -Pass | None | +Pass | 1000 | |
| Case 6.7.3 | -Pass | None | +Pass | 1000 | |
| Case 6.7.4 | -Pass | None | +Pass | 1000 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.8 First possible sequence length 5/6 (invalid codepoints) | |||||
| Case 6.8.1 | -Pass | None | +Pass | 1007 | |
| Case 6.8.2 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.9 Last possible sequence of a certain length | |||||
| Case 6.9.1 | -Pass | None | +Pass | 1000 | |
| Case 6.9.2 | -Pass | None | +Pass | 1000 | |
| Case 6.9.3 | -Pass | None | +Pass | 1000 | |
| Case 6.9.4 | -Pass | None | +Pass | 1000 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.10 Last possible sequence length 4/5/6 (invalid codepoints) | |||||
| Case 6.10.1 | -Pass | None | +Pass | 1007 | |
| Case 6.10.2 | -Pass | None | +Pass | 1007 | |
| Case 6.10.3 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.11 Other boundary conditions | |||||
| Case 6.11.1 | -Pass | None | +Pass | 1000 | |
| Case 6.11.2 | -Pass | None | +Pass | 1000 | |
| Case 6.11.3 | -Pass | None | +Pass | 1000 | |
| Case 6.11.4 | -Pass | None | +Pass | 1000 | |
| Case 6.11.5 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.12 Unexpected continuation bytes | |||||
| Case 6.12.1 | -Pass | None | +Pass | 1007 | |
| Case 6.12.2 | -Pass | None | +Pass | 1007 | |
| Case 6.12.3 | -Pass | None | +Pass | 1007 | |
| Case 6.12.4 | -Pass | None | +Pass | 1007 | |
| Case 6.12.5 | -Pass | None | +Pass | 1007 | |
| Case 6.12.6 | -Pass | None | +Pass | 1007 | |
| Case 6.12.7 | -Pass | None | +Pass | 1007 | |
| Case 6.12.8 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.13 Lonely start characters | |||||
| Case 6.13.1 | -Pass | None | +Pass | 1007 | |
| Case 6.13.2 | -Pass | None | +Pass | 1007 | |
| Case 6.13.3 | -Pass | None | +Pass | 1007 | |
| Case 6.13.4 | -Pass | None | +Pass | 1007 | |
| Case 6.13.5 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.14 Sequences with last continuation byte missing | |||||
| Case 6.14.1 | -Pass | None | +Pass | 1007 | |
| Case 6.14.2 | -Pass | None | +Pass | 1007 | |
| Case 6.14.3 | -Pass | None | +Pass | 1007 | |
| Case 6.14.4 | -Pass | None | +Pass | 1007 | |
| Case 6.14.5 | -Pass | None | +Pass | 1007 | |
| Case 6.14.6 | -Pass | None | +Pass | 1007 | |
| Case 6.14.7 | -Pass | None | +Pass | 1007 | |
| Case 6.14.8 | -Pass | None | +Pass | 1007 | |
| Case 6.14.9 | -Pass | None | +Pass | 1007 | |
| Case 6.14.10 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.15 Concatenation of incomplete sequences | |||||
| Case 6.15.1 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.16 Impossible bytes | |||||
| Case 6.16.1 | -Pass | None | +Pass | 1007 | |
| Case 6.16.2 | -Pass | None | +Pass | 1007 | |
| Case 6.16.3 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.17 Examples of an overlong ASCII character | |||||
| Case 6.17.1 | -Pass | None | +Pass | 1007 | |
| Case 6.17.2 | -Pass | None | +Pass | 1007 | |
| Case 6.17.3 | -Pass | None | +Pass | 1007 | |
| Case 6.17.4 | -Pass | None | +Pass | 1007 | |
| Case 6.17.5 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.18 Maximum overlong sequences | |||||
| Case 6.18.1 | -Pass | None | +Pass | 1007 | |
| Case 6.18.2 | -Pass | None | +Pass | 1007 | |
| Case 6.18.3 | -Pass | None | +Pass | 1007 | |
| Case 6.18.4 | -Pass | None | +Pass | 1007 | |
| Case 6.18.5 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.19 Overlong representation of the NUL character | |||||
| Case 6.19.1 | -Pass | None | +Pass | 1007 | |
| Case 6.19.2 | -Pass | None | +Pass | 1007 | |
| Case 6.19.3 | -Pass | None | +Pass | 1007 | |
| Case 6.19.4 | -Pass | None | +Pass | 1007 | |
| Case 6.19.5 | -Pass | None | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.20 Single UTF-16 surrogates | |||||
| Case 6.20.1 | -Fail | Fail | +Pass | 1007 | |
| Case 6.20.2 | -Fail | Fail | +Pass | 1007 | |
| Case 6.20.3 | -Fail | Fail | +Pass | 1007 | |
| Case 6.20.4 | -Fail | Fail | +Pass | 1007 | |
| Case 6.20.5 | -Fail | Fail | +Pass | 1007 | |
| Case 6.20.6 | -Fail | Fail | +Pass | 1007 | |
| Case 6.20.7 | -Fail | Fail | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.21 Paired UTF-16 surrogates | |||||
| Case 6.21.1 | -Fail | Fail | +Pass | 1007 | |
| Case 6.21.2 | -Fail | Fail | +Pass | 1007 | |
| Case 6.21.3 | -Fail | Fail | +Pass | 1007 | |
| Case 6.21.4 | -Fail | Fail | +Pass | 1007 | |
| Case 6.21.5 | -Fail | Fail | +Pass | 1007 | |
| Case 6.21.6 | -Fail | Fail | +Pass | 1007 | |
| Case 6.21.7 | -Fail | Fail | +Pass | 1007 | |
| Case 6.21.8 | -Fail | Fail | +Pass | 1007 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.22 Non-character code points (valid UTF-8) | |||||
| Case 6.22.1 | -Pass | None | +Pass | 1000 | |
| Case 6.22.2 | -Pass | None | +Pass | 1000 | |
| Case 6.22.3 | -Pass | None | +Pass | 1000 | |
| Case 6.22.4 | -Pass | None | +Pass | 1000 | |
| Case 6.22.5 | -Pass | None | +Pass | 1000 | |
| Case 6.22.6 | -Pass | None | +Pass | 1000 | |
| Case 6.22.7 | -Pass | None | +Pass | 1000 | |
| Case 6.22.8 | -Pass | None | +Pass | 1000 | |
| Case 6.22.9 | -Pass | None | +Pass | 1000 | |
| Case 6.22.10 | -Pass | None | +Pass | 1000 | |
| Case 6.22.11 | -Pass | None | +Pass | 1000 | |
| Case 6.22.12 | -Pass | None | +Pass | 1000 | |
| Case 6.22.13 | -Pass | None | +Pass | 1000 | |
| Case 6.22.14 | -Pass | None | +Pass | 1000 | |
| Case 6.22.15 | -Pass | None | +Pass | 1000 | |
| Case 6.22.16 | -Pass | None | +Pass | 1000 | |
| Case 6.22.17 | -Pass | None | +Pass | 1000 | |
| Case 6.22.18 | -Pass | None | +Pass | 1000 | |
| Case 6.22.19 | -Pass | None | +Pass | 1000 | |
| Case 6.22.20 | -Pass | None | +Pass | 1000 | |
| Case 6.22.21 | -Pass | None | +Pass | 1000 | |
| Case 6.22.22 | -Pass | None | +Pass | 1000 | |
| Case 6.22.23 | -Pass | None | +Pass | 1000 | |
| Case 6.22.24 | -Pass | None | +Pass | 1000 | |
| Case 6.22.25 | -Pass | None | +Pass | 1000 | |
| Case 6.22.26 | -Pass | None | +Pass | 1000 | |
| Case 6.22.27 | -Pass | None | +Pass | 1000 | |
| Case 6.22.28 | -Pass | None | +Pass | 1000 | |
| Case 6.22.29 | -Pass | None | +Pass | 1000 | |
| Case 6.22.30 | -Pass | None | +Pass | 1000 | |
| Case 6.22.31 | -Pass | None | +Pass | 1000 | |
| Case 6.22.32 | -Pass | None | +Pass | 1000 | |
| Case 6.22.33 | -Pass | None | +Pass | 1000 | |
| Case 6.22.34 | -Pass | None | +Pass | 1000 | |
| 6 UTF-8 Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 6.23 Unicode replacement character | +6.23 Unicode specials (i.e. replacement char) | ||||
| Case 6.23.1 | -Pass | None | +Pass | 1000 | +|
| Case 6.23.2 | +Pass | 1000 | +|||
| Case 6.23.3 | +Pass | 1000 | +|||
| Case 6.23.4 | +Pass | 1000 | +|||
| Case 6.23.5 | +Pass | 1000 | +|||
| Case 6.23.6 | +Pass | 1000 | +|||
| Case 6.23.7 | +Pass | 1000 | |||
| 7 Close Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 7.1 Basic close behavior (fuzzer initiated) | |||||
| Case 7.1.1 | -Pass | None | +Pass | 1000 | |
| Case 7.1.2 | -Pass | None | +Pass | 1000 | |
| Case 7.1.3 | -Pass | None | +Pass | 1000 | |
| Case 7.1.4 | -Pass | None | +Pass | 1000 | |
| Case 7.1.5 | -Pass | None | +Pass | 1000 | |
| Case 7.1.6 | -Info | None | +Info | 1000 | |
| 7 Close Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 7.3 Close frame structure: payload length (fuzzer initiated) | |||||
| Case 7.3.1 | -Pass | None | +Pass | None | |
| Case 7.3.2 | -Pass | None | +Pass | None | |
| Case 7.3.3 | -Pass | None | +Pass | 1000 | |
| Case 7.3.4 | -Pass | None | +Pass | 1000 | |
| Case 7.3.5 | -Pass | None | +Pass | 1000 | |
| Case 7.3.6 | -Pass | None | +Pass | 1002 | |
| 7 Close Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 7.5 Close frame structure: payload value (fuzzer initiated) | |||||
| Case 7.5.1 | -Pass | None | +Pass | 1007 | |
| 7 Close Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 7.7 Close frame structure: valid close codes (fuzzer initiated) | |||||
| Case 7.7.1 | -Pass | None | +Pass | 1000 | |
| Case 7.7.2 | -Pass | None | +Pass | 1001 | |
| Case 7.7.3 | -Pass | None | +Pass | 1002 | |
| Case 7.7.4 | -Pass | None | +Pass | 1003 | |
| Case 7.7.5 | -Pass | None | +Pass | 1007 | |
| Case 7.7.6 | -Pass | None | +Pass | 1008 | |
| Case 7.7.7 | -Pass | None | +Pass | 1009 | |
| Case 7.7.8 | -Pass | None | +Pass | 1010 | |
| Case 7.7.9 | -Pass | None | +Pass | 1011 | |
| Case 7.7.10 | -Pass | None | +Pass | 3000 | |
| Case 7.7.11 | -Pass | None | +Pass | 3999 | |
| Case 7.7.12 | -Pass | None | +Pass | 4000 | |
| Case 7.7.13 | -Pass | None | +Pass | 4999 | |
| 7 Close Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 7.9 Close frame structure: invalid close codes (fuzzer initiated) | |||||
| Case 7.9.1 | -Pass | None | +Pass | 1002 | |
| Case 7.9.2 | -Pass | None | +Pass | 1002 | |
| Case 7.9.3 | -Pass | None | +Pass | 1002 | |
| Case 7.9.4 | -Pass | None | +Pass | 1002 | |
| Case 7.9.5 | -Pass | None | +Pass | 1002 | |
| Case 7.9.6 | -Pass | None | +Pass | None | |
| Case 7.9.7 | -Pass | None | +Pass | 1002 | |
| Case 7.9.8 | -Pass | None | +Pass | None | |
| Case 7.9.9 | -Pass | None | +Pass | None | |
| Case 7.9.10 | -Pass | None | +Pass | None | |
| Case 7.9.11 | -Pass | None | -|||
| Case 7.9.12 | -Pass | None | -|||
| Case 7.9.13 | -Pass | None | +Pass | None | |
| 7 Close Handling | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 7.13 Informational close information (fuzzer initiated) | |||||
| Case 7.13.1 | -Info | None | +Info | 1002 | |
| Case 7.13.2 | -Info | None | +Info | 1002 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.1 Text Message (increasing size) | |||||
| Case 9.1.1 | -Pass 67 ms | None | +Pass 4 ms | 1000 | |
| Case 9.1.2 | -Pass 260 ms | None | +Pass 10 ms | 1000 | |
| Case 9.1.3 | -Pass 1042 ms | None | +Pass 31 ms | 1000 | |
| Case 9.1.4 | -Pass 4180 ms | None | +Pass 149 ms | 1000 | |
| Case 9.1.5 | -Pass 8364 ms | None | +Pass 233 ms | 1000 | |
| Case 9.1.6 | -Pass 16993 ms | None | +Pass 521 ms | 1000 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.2 Binary Message (increasing size) | |||||
| Case 9.2.1 | -Pass 39 ms | None | +Pass 3 ms | 1000 | |
| Case 9.2.2 | -Pass 85 ms | None | +Pass 7 ms | 1000 | |
| Case 9.2.3 | -Pass 338 ms | None | +Pass 28 ms | 1000 | |
| Case 9.2.4 | -Pass 1375 ms | None | +Pass 103 ms | 1000 | |
| Case 9.2.5 | -Pass 2740 ms | None | +Pass 231 ms | 1000 | |
| Case 9.2.6 | -Pass 5554 ms | None | +Pass 408 ms | 1000 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.3 Fragmented Text Message (fixed size, increasing fragment size) | |||||
| Case 9.3.1 | -Pass 70578 ms | None | +Pass 32384 ms | 1000 | |
| Case 9.3.2 | -Pass 20991 ms | None | +Pass 8061 ms | 1000 | |
| Case 9.3.3 | -Pass 8471 ms | None | +Pass 2199 ms | 1000 | |
| Case 9.3.4 | -Pass 5286 ms | None | +Pass 564 ms | 1000 | |
| Case 9.3.5 | -Pass 4403 ms | None | +Pass 179 ms | 1000 | |
| Case 9.3.6 | -Pass 4160 ms | None | +Pass 86 ms | 1000 | |
| Case 9.3.7 | -Pass 4123 ms | None | +Pass 71 ms | 1000 | |
| Case 9.3.8 | -Pass 4096 ms | None | +Pass 69 ms | 1000 | |
| Case 9.3.9 | -Pass 4074 ms | None | +Pass 73 ms | 1000 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.4 Fragmented Binary Message (fixed size, increasing fragment size) | |||||
| Case 9.4.1 | -Pass 69384 ms | None | +Pass 2445 ms | 1000 | |
| Case 9.4.2 | -Pass 17962 ms | None | +Pass 654 ms | 1000 | |
| Case 9.4.3 | -Pass 5637 ms | None | +Pass 205 ms | 1000 | |
| Case 9.4.4 | -Pass 2497 ms | None | +Pass 68 ms | 1000 | |
| Case 9.4.5 | -Pass 1597 ms | None | +Pass 42 ms | 1000 | |
| Case 9.4.6 | -Pass 1359 ms | None | +Pass 39 ms | 1000 | |
| Case 9.4.7 | -Pass 1299 ms | None | +Pass 55 ms | 1000 | |
| Case 9.4.8 | -Pass 1296 ms | None | +Pass 70 ms | 1000 | |
| Case 9.4.9 | -Pass 1273 ms | None | +Pass 50 ms | 1000 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.5 Text Message (fixed size, increasing chop size) | |||||
| Case 9.5.1 | -Pass 17529 ms | None | +Pass 16426 ms | 1000 | |
| Case 9.5.2 | -Pass 9293 ms | None | +Pass 8233 ms | 1000 | |
| Case 9.5.3 | -Pass 5166 ms | None | +Pass 4126 ms | 1000 | |
| Case 9.5.4 | -Pass 3168 ms | None | +Pass 2072 ms | 1000 | |
| Case 9.5.5 | -Pass 2137 ms | None | +Pass 1049 ms | 1000 | |
| Case 9.5.6 | -Pass 1571 ms | None | +Pass 534 ms | 1000 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.6 Binary Text Message (fixed size, increasing chop size) | |||||
| Case 9.6.1 | -Pass 16825 ms | None | +Pass 16426 ms | 1000 | |
| Case 9.6.2 | -Pass 8639 ms | None | +Pass 8227 ms | 1000 | |
| Case 9.6.3 | -Pass 4504 ms | None | +Pass 4122 ms | 1000 | |
| Case 9.6.4 | -Pass 2434 ms | None | +Pass 2074 ms | 1000 | |
| Case 9.6.5 | -Pass 1461 ms | None | +Pass 1048 ms | 1000 | |
| Case 9.6.6 | -Pass 909 ms | None | +Pass 533 ms | 1000 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.7 Text Message Roundtrip Time (fixed number, increasing size) | |||||
| Case 9.7.1 | -Pass 267 ms | None | +Pass 160 ms | 1000 | |
| Case 9.7.2 | -Pass 289 ms | None | +Pass 164 ms | 1000 | |
| Case 9.7.3 | -Pass 321 ms | None | +Pass 169 ms | 1000 | |
| Case 9.7.4 | -Pass 551 ms | None | +Pass 186 ms | 1000 | |
| Case 9.7.5 | -Pass 1435 ms | None | +Pass 239 ms | 1000 | |
| Case 9.7.6 | -Pass 4887 ms | None | +Pass 439 ms | 1000 | |
| 9 Limits/Performance | -tootallnate/websocket | +TooTallNateWebsocket | |||
| 9.8 Binary Message Roundtrip Time (fixed number, increasing size) | |||||
| Case 9.8.1 | -Pass 227 ms | None | +Pass 154 ms | 1000 | |
| Case 9.8.2 | -Pass 259 ms | None | +Pass 165 ms | 1000 | |
| Case 9.8.3 | -Pass 255 ms | None | +Pass 162 ms | 1000 | |
| Case 9.8.4 | -Pass 355 ms | None | +Pass 177 ms | 1000 | |
| Case 9.8.5 | -Pass 636 ms | None | +Pass 220 ms | 1000 | |
| Case 9.8.6 | -Pass 1940 ms | None | +Pass 395 ms | 1000 | |
| 10 Autobahn Protocol Options | -tootallnate/websocket | +10 Misc | +TooTallNateWebsocket | ||
| 10.1 Auto-Fragmentation | |||||
| Case 10.1.1 | -Pass | None | +Pass | 1000 | |
Case Description
Send text message with payload 0.
Case Expectation
Receive echo'ed text message (with empty payload). Clean close with normal code.
Case Description
Send text message message with payload of length 125.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 126.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 127.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 128.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 65535.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 65536.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 65536. Sent out data in chops of 997 octets.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send binary message with payload 0.
Case Expectation
Receive echo'ed binary message (with empty payload). Clean close with normal code.
Case Description
Send binary message message with payload of length 125.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 126.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 127.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 128.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 65535.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 65536.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send ping without payload.
Case Expectation
Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with small text payload.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with small binary (non UTF-8) payload.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with binary payload of 125 octets.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with binary payload of 126 octets.
Case Expectation
Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..
Case Description
Send ping with binary payload of 125 octets, send in octet-wise chops.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.
Case Description
Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.
Case Expectation
Nothing.
Case Description
Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.
Case Expectation
Nothing.
Case Description
Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.
Case Expectation
Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.
Case Description
Send 10 Pings with payload.
Case Expectation
Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.
Case Description
Send 10 Pings with payload. Send out octets in octet-wise chops.
Case Expectation
Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.
Case Description
Send small text message with RSV = 1.
Case Expectation
The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negoiated.
Case Description
Send small text message, then send again with RSV = 2, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negoiated. The Pong is not received.
Case Description
Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negoiated. The Pong is not received.
Case Description
Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negoiated. The Pong is not received.
Case Description
Send small binary message with RSV = 5.
Case Expectation
The connection is failed immediately, since RSV must be 0.
Case Description
Send Ping with RSV = 6.
Case Expectation
The connection is failed immediately, since RSV must be 0.
Case Description
Send Close with RSV = 7.
Case Expectation
The connection is failed immediately, since RSV must be 0.
Case Description
Send frame with reserved non-control Opcode = 3.
Case Expectation
The connection is failed immediately.
Case Description
Send frame with reserved non-control Opcode = 4 and non-empty payload.
Case Expectation
The connection is failed immediately.
Case Description
Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send text message with payload 0.
Case Expectation
Receive echo'ed text message (with empty payload). Clean close with normal code.
Case Description
Send text message message with payload of length 125.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 126.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 127.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 128.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 65535.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 65536.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send text message message with payload of length 65536. Sent out data in chops of 997 octets.
Case Expectation
Receive echo'ed text message (with payload as sent). Clean close with normal code.
Case Description
Send binary message with payload 0.
Case Expectation
Receive echo'ed binary message (with empty payload). Clean close with normal code.
Case Description
Send binary message message with payload of length 125.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 126.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 127.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 128.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 65535.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 65536.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.
Case Expectation
Receive echo'ed binary message (with payload as sent). Clean close with normal code.
Case Description
Send ping without payload.
Case Expectation
Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with small text payload.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with small binary (non UTF-8) payload.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with binary payload of 125 octets.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.
Case Description
Send ping with binary payload of 126 octets.
Case Expectation
Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..
Case Description
Send ping with binary payload of 125 octets, send in octet-wise chops.
Case Expectation
Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.
Case Description
Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.
Case Expectation
Nothing.
Case Description
Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.
Case Expectation
Nothing.
Case Description
Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.
Case Expectation
Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.
Case Description
Send 10 Pings with payload.
Case Expectation
Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.
Case Description
Send 10 Pings with payload. Send out octets in octet-wise chops.
Case Expectation
Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.
Case Description
Send small text message with RSV = 1.
Case Expectation
The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negotiated.
Case Description
Send small text message, then send again with RSV = 2, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.
Case Description
Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.
Case Description
Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.
Case Description
Send small binary message with RSV = 5.
Case Expectation
The connection is failed immediately, since RSV must be 0.
Case Description
Send Ping with RSV = 6.
Case Expectation
The connection is failed immediately, since RSV must be 0.
Case Description
Send Close with RSV = 7.
Case Expectation
The connection is failed immediately, since RSV must be 0.
Case Description
Send frame with reserved non-control Opcode = 3.
Case Expectation
The connection is failed immediately.
Case Description
Send frame with reserved non-control Opcode = 4 and non-empty payload.
Case Expectation
The connection is failed immediately.
Case Description
Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send frame with reserved control Opcode = 11.
Case Expectation
The connection is failed immediately.
Case Description
Send frame with reserved control Opcode = 12 and non-empty payload.
Case Expectation
The connection is failed immediately.
Case Description
Send small text message, then send frame with reserved control Opcode = 13, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send Ping fragmented into 2 fragments.
Case Expectation
Connection is failed immediately, since control message MUST NOT be fragmented.
Case Description
Send Pong fragmented into 2 fragments.
Case Expectation
Connection is failed immediately, since control message MUST NOT be fragmented.
Case Description
Send text Message fragmented into 2 fragments.
Case Expectation
Message is processed and echo'ed back to us.
Case Description
Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.
Case Expectation
Message is processed and echo'ed back to us.
Case Description
Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.
Case Expectation
Message is processed and echo'ed back to us.
Case Description
Send text Message fragmented into 2 fragments, one ping with payload in-between.
Case Expectation
A pong is received, then the message is echo'ed back to us.
Case Description
Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.
Case Expectation
A pong is received, then the message is echo'ed back to us.
Case Description
Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.
Case Expectation
A pong is received, then the message is echo'ed back to us.
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.
Case Expectation
The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.
Case Description
A fragmented text message is sent in multiple frames. After
+ sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s,
+ then we send 2 more text fragments, another Ping and then the final text fragment.
+ Everything is legal.
Case Expectation
The peer immediately answers the first Ping before
+ it has received the last text message fragment. The peer pong's back the Ping's
+ payload exactly, and echo's the payload of the fragmented message back to us.
Case Description
Same as Case 5.19, but send all frames with SYNC = True.
+ Note, this does not change the octets sent in any way, only how the stream
+ is chopped up on the wire.
Case Expectation
Same as Case 5.19. Implementations must be agnostic to how
+ octet stream is chopped up on wire (must be TCP clean).
Case Description
Send text message of length 0.
Case Expectation
A message is echo'ed back to us (with empty payload).
Case Description
Send fragmented text message, 3 fragments each of length 0.
Case Expectation
A message is echo'ed back to us (with empty payload).
Case Description
Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.
Case Expectation
A message is echo'ed back to us (with payload = payload of middle fragment).
Case Description
Send a valid UTF-8 text message in one fragment.
MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121
Case Expectation
The message is echo'ed back to us.
Case Description
Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.
MESSAGE FRAGMENT 1:
Hello-µ@ßöä
48656c6c6f2dc2b540c39fc3b6c3a4
MESSAGE FRAGMENT 2:
üàá-UTF-8!!
c3bcc3a0c3a12d5554462d382121
Case Expectation
The message is echo'ed back to us.
Case Description
Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.
MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121
Case Expectation
The message is echo'ed back to us.
Case Description
Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.
MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5
Case Expectation
The message is echo'ed back to us.
Case Description
Send invalid UTF-8 text message unfragmented.
MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.
MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send invalid UTF-8 text message in 3 fragments (frames).
+First frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest.
+Note that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x110000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range).
+
MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+
Case Expectation
The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid.
+
MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 = 8080656469746564
+
Case Expectation
The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame.
+
MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+
Case Expectation
The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame.
+
MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 =
+
Case Expectation
The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0x68656c6c6f24776f726c64
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0x68656c6c6fc2a2776f726c64
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0x68656c6c6fe282ac776f726c64
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0x68656c6c6ff0a4ada2776f726c64
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9cf83cebcceb5
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xce
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xceba
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xcebae1
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xcebae1bd
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9cf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9cf83
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9cf83ce
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9cf83cebc
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9cf83cebcce
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xcebae1bdb9cf83cebcceb5
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0x00
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xc280
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xe0a080
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf0908080
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf888808080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfc8480808080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0x7f
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xdfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf48fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf7bfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfbbfbfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfdbfbfbfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xed9fbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xee8080
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbd
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf48fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf4908080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0x80
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0x80bf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0x80bf80
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0x80bf80bf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0x80bf80bf80
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0x80bf80bf80bf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf020f120f220f320f420f520f620
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf820f920fa20
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfc20
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xc0
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xe080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf08080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf8808080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfc80808080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xdf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xefbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf7bfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfbbfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfdbfbfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfe
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xff
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfefeffff
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xc0af
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xe080af
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf08080af
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf8808080af
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfc80808080af
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xc1bf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xe09fbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf08fbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf887bfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfc83bfbfbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xc080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xe08080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf0808080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xf880808080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xfc8080808080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xeda080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedadbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedae80
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedafbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedb080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedbe80
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xeda080edb080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xeda080edbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedadbfedb080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedadbfedbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedae80edb080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedae80edbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedafbfedb080
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
Payload: 0xedafbfedbfbf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf09fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf09fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf0afbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf0afbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf0bfbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf0bfbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf18fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf18fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf19fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf19fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf1afbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf1afbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf1bfbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf1bfbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf28fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf28fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf29fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf29fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf2afbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf2afbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf2bfbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf2bfbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf38fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf38fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf39fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf39fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf3afbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf3afbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf3bfbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf3bfbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf48fbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xf48fbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfb9
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfba
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbb
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbc
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbd
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbe
Case Expectation
The message is echo'ed back to us.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
Payload: 0xefbfbf
Case Expectation
The message is echo'ed back to us.
Case Description
Send a message followed by a close frame
Case Expectation
Echoed message followed by clean close with normal code.
Case Description
Send two close frames
Case Expectation
Clean close with normal code. Second close frame ignored.
Case Description
Send a ping after close message
Case Expectation
Clean close with normal code, no pong.
Case Description
Send text message after sending a close frame.
Case Expectation
Clean close with normal code. Text message ignored.
Case Description
Send message fragment1 followed by close then fragment
Case Expectation
Clean close with normal code.
Case Description
Send 256K message followed by close then a ping
Case Expectation
Case outcome depends on implementation defined close behavior. Message and close frame are sent back to back. If the close frame is processed before the text message write is complete (as can happen in asynchronous processing models) the close frame is processed first and the text message may not be received or may only be partially recieved.
Case Description
Send a close frame with payload length 0 (no close code, no close reason)
Case Expectation
Clean close with normal code.
Case Description
Send a close frame with payload length 1
Case Expectation
Clean close with protocol error or drop TCP.
Case Description
Send a close frame with payload length 2 (regular close with a code)
Case Expectation
Clean close with normal code.
Case Description
Send a close frame with close code and close reason
Case Expectation
Clean close with normal code.
Case Description
Send a close frame with close code and close reason of maximum length (123)
Case Expectation
Clean close with normal code.
Case Description
Send a close frame with close code and close reason which is too long (124) - total frame payload 126 octets
Case Expectation
Clean close with protocol error code or dropped TCP connection.
Case Description
Send a close frame with invalid UTF8 payload
Case Expectation
Clean close with protocol error or invalid utf8 code or dropped TCP.
Case Description
Send close with valid close code 1000
Case Expectation
Clean close with normal or echoed code
Case Description
Send close with valid close code 1001
Case Expectation
Clean close with normal or echoed code
Case Description
Send close with valid close code 1002
Case Expectation
Clean close with normal or echoed code
Case Description
Send close with valid close code 1003
Case Expectation
Clean close with normal or echoed code
Case Description
Send close with valid close code 1007
Case Expectation
Clean close with normal or echoed code
Case Description
Send close with valid close code 1008
Case Expectation
Clean close with normal or echoed code
Case Description
Send close with valid close code 1009
Case Expectation
Clean close with normal or echoed code
Case Description
Send frame with reserved control Opcode = 11.
Case Expectation
The connection is failed immediately.
Case Description
Send close with valid close code 1010
Case Expectation
Clean close with normal or echoed code
Case Description
Send frame with reserved control Opcode = 12 and non-empty payload.
Case Expectation
The connection is failed immediately.
Case Description
Send close with valid close code 1011
Case Expectation
Clean close with normal or echoed code
Case Description
Send small text message, then send frame with reserved control Opcode = 13, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send close with valid close code 3000
Case Expectation
Clean close with normal or echoed code
Case Description
Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send close with valid close code 3999
Case Expectation
Clean close with normal or echoed code
Case Description
Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.
Case Expectation
Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.
Case Description
Send close with valid close code 4000
Case Expectation
Clean close with normal or echoed code
Case Description
Send Ping fragmented into 2 fragments.
Case Expectation
Connection is failed immediately, since control message MUST NOT be fragmented.
Case Description
Send close with valid close code 4999
Case Expectation
Clean close with normal or echoed code
Case Description
Send Pong fragmented into 2 fragments.
Case Expectation
Connection is failed immediately, since control message MUST NOT be fragmented.
Case Description
Send close with invalid close code 0
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 999
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 1004
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 1005
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 1006
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 1014
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 1015
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 1016
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 1100
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 2000
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with invalid close code 2999
Case Expectation
Clean close with protocol error code or drop TCP
Case Description
Send close with close code 5000
Case Expectation
Actual events are undefined by the spec.
Case Description
Send close with close code 65536
Case Expectation
Actual events are undefined by the spec.
Case Description
Send text message message with payload of length 64 * 2**10 (64k).
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text message message with payload of length 256 * 2**10 (256k).
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text message message with payload of length 1 * 2**20 (1M).
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text message message with payload of length 4 * 2**20 (4M).
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text message message with payload of length 8 * 2**20 (8M).
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text message message with payload of length 16 * 2**20 (16M).
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send binary message message with payload of length 64 * 2**10 (64k).
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send binary message message with payload of length 256 * 2**10 (256k).
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send binary message message with payload of length 1 * 2**20 (1M).
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send binary message message with payload of length 4 * 2**20 (4M).
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send binary message message with payload of length 8 * 2**20 (16M).
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send binary message message with payload of length 16 * 2**20 (16M).
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments.
Case Expectation
Message is processed and echo'ed back to us.
Case Description
Send fragmented text message message with message payload of length 4 * 2**20 (8M). Sent out in fragments of 4M.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.
Case Expectation
Message is processed and echo'ed back to us.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.
Case Expectation
Message is processed and echo'ed back to us.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments, one ping with payload in-between.
Case Expectation
A pong is received, then the message is echo'ed back to us.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.
Case Expectation
A pong is received, then the message is echo'ed back to us.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.
Case Expectation
A pong is received, then the message is echo'ed back to us.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4M.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.
Case Expectation
The connection is failed immediately, since there is no message to continue.
Case Description
Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.
Case Expectation
The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.
Case Description
Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
A fragmented text message is sent in multiple frames. After
- sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s,
- then we send 2 more text fragments, another Ping and then the final text fragment.
- Everything is legal.
Case Expectation
The peer immediately answers the first Ping before
- it has received the last text message fragment. The peer pong's back the Ping's
- payload exactly, and echo's the payload of the fragmented message back to us.
Case Description
Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.
Case Expectation
Receive echo'ed binary message (with payload as sent).
Case Description
Same as Case 5.19, but send all frames with SYNC = True.
- Note, this does not change the octets sent in any way, only how the stream
- is chopped up on the wire.
Case Expectation
Same as Case 5.19. Implementations must be agnostic to how
- octet stream is chopped up on wire (must be TCP clean).
Case Description
Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send text message of length 0.
Case Expectation
A message is echo'ed back to us (with empty payload).
Case Description
Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message, 3 fragments each of length 0.
Case Expectation
A message is echo'ed back to us (with empty payload).
Case Description
Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.
Case Expectation
A message is echo'ed back to us (with payload = payload of middle fragment).
Case Description
Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send a valid UTF-8 text message in one fragment.
MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121
Case Expectation
The message is echo'ed back to us.
Case Description
Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.
Case Expectation
Receive echo'ed text message (with payload as sent).
Case Description
Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.
MESSAGE FRAGMENT 1:
Hello-µ@ßöä
48656c6c6f2dc2b540c39fc3b6c3a4
MESSAGE FRAGMENT 2:
üàá-UTF-8!!
c3bcc3a0c3a12d5554462d382121
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 text messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.
Case Description
Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.
MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 text messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.
Case Description
Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.
MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 text messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.
Case Description
Send invalid UTF-8 text message unfragmented.
MESSAGE:
κόσμεedited
cebae1bdb9cf83cebcceb5eda080656469746564
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send 1000 text messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed text messages (with payload as sent). Timeout case after 120 secs.
Case Description
Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.
MESSAGE:
κόσμεedited
cebae1bdb9cf83cebcceb5eda080656469746564
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send 1000 text messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed text messages (with payload as sent). Timeout case after 240 secs.
Case Description
Send invalid UTF-8 text message in 3 fragments (frames).
-First frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest.
-Note that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x11000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range).
-
MESSAGE PARTS:
-PART1 = κόσμε (cebae1bdb9cf83cebcceb5)
-PART2 = (f4908080)
-PART3 = edited (656469746564)
-
Case Expectation
The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Send 1000 text messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed text messages (with payload as sent). Timeout case after 480 secs.
Case Description
Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid.
-
MESSAGE PARTS:
-PART1 = κόσμε (cebae1bdb9cf83cebcceb5f4)
-PART2 = (90)
-PART3 = edited (8080656469746564)
-
Case Expectation
The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Send 1000 binary messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.
Case Description
Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame.
-
MESSAGE PARTS:
-PART1 = κόσμε (cebae1bdb9cf83cebcceb5)
-PART2 = (f4908080)
-PART3 = edited (656469746564)
-
Case Expectation
The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Send 1000 binary messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.
Case Description
Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame.
-
MESSAGE PARTS:
-PART1 = κόσμε (cebae1bdb9cf83cebcceb5f4)
-PART2 = (90)
-PART3 = ()
-
Case Expectation
The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.
Case Description
Send 1000 binary messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 binary messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed binary messages (with payload as sent). Timeout case after 120 secs.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
MESSAGE:
ce
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send 1000 binary messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed binary messages (with payload as sent). Timeout case after 240 secs.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
MESSAGE:
κ
ceba
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 binary messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.
Case Expectation
Receive echo'ed binary messages (with payload as sent). Timeout case after 480 secs.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
MESSAGE:
κ
cebae1
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send text message with payload of length 65536 auto-fragmented with autoFragmentSize = 1300.
Case Expectation
Receive echo'ed text message (with payload as sent and transmitted frame counts as expected). Clean close with normal code.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
MESSAGE:
κ
cebae1bd
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
MESSAGE:
κό
cebae1bdb9
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
MESSAGE:
κό
cebae1bdb9cf
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
MESSAGE:
κόσ
cebae1bdb9cf83
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
MESSAGE:
κόσ
cebae1bdb9cf83ce
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
MESSAGE:
κόσμ
cebae1bdb9cf83cebc
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.
Case Description
Send a text message with payload which is not valid UTF-8 in one fragment.
MESSAGE:
κόσμ
cebae1bdb9cf83cebcce
Case Expectation
The connection is failed immediately, since the payload is not valid UTF-8.
Case Description
Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5
Case Expectation
The message is echo'ed back to us.
Case Description
Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.
Case Expectation
Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.
Case Description
Send a text message with payload which is valid UTF-8 in one fragment.
MESSAGE: