docs: init migration guide
This commit is contained in:
2
Makefile
2
Makefile
@@ -2,6 +2,6 @@ help: ## print this message
|
|||||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
||||||
|
|
||||||
build-site: ## build the site
|
build-site: ## build the site
|
||||||
mvn javadoc:javadoc site -DskipTests
|
mvn clean javadoc:javadoc site -DskipTests
|
||||||
|
|
||||||
.PHONY: build-site
|
.PHONY: build-site
|
||||||
|
|||||||
18
src/site/markdown/changelog.md
Normal file
18
src/site/markdown/changelog.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
## [2.0.0](https://github.com/socketio/socket.io-client-java/compare/socket.io-client-1.0.1...socket.io-client-2.0.0) (2020-12-14)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add options builder ([#304](https://github.com/socketio/socket.io-client-java/issues/304)) ([49068d3](https://github.com/socketio/socket.io-client-java/commit/49068d3cc504c9b83e29a8d5cb4350360c6ef8ea))
|
||||||
|
* add support for Socket.IO v3 ([79cb27f](https://github.com/socketio/socket.io-client-java/commit/79cb27fc979ecf1eec9dc2dd4a72c8081149d1e2)), closes [/github.com/socketio/socket.io-protocol#difference-between-v5-and-v4](https://github.com//github.com/socketio/socket.io-protocol/issues/difference-between-v5-and-v4)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [1.0.1](https://github.com/socketio/socket.io-client-java/compare/socket.io-client-1.0.0...socket.io-client-1.0.1) (2020-12-10)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* don't process socket.connect() if we are already re-connecting ([#577](https://github.com/socketio/socket.io-client-java/issues/577)) ([54b7311](https://github.com/socketio/socket.io-client-java/commit/54b73114d19f33a78bec1ce99325893129f8a148))
|
||||||
|
* handle case where URI.getHost() returns null ([#484](https://github.com/socketio/socket.io-client-java/issues/484)) ([567372e](https://github.com/socketio/socket.io-client-java/commit/567372ecfa6c86bdc72f8bc64985d6511dc87666))
|
||||||
177
src/site/markdown/migrating_from_1_x.md
Normal file
177
src/site/markdown/migrating_from_1_x.md
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
# Migrating from 1.x
|
||||||
|
|
||||||
|
The `2.0.0` release is the first release which is compatible with the Socket.IO v3 server. You can find more information about the v3 release here: https://socket.io/blog/socket-io-3-release/
|
||||||
|
|
||||||
|
Here is the compatibility table:
|
||||||
|
|
||||||
|
| Java client version | Socket.IO server |
|
||||||
|
| -------------- | ---------------- |
|
||||||
|
| 0.9.x | 1.x |
|
||||||
|
| 1.x | 2.x |
|
||||||
|
| 2.x | 3.x |
|
||||||
|
|
||||||
|
**Important note:** due to the backward incompatible changes to the Socket.IO protocol, a 2.x Java client will not be able to reach a 2.x server, and vice-versa
|
||||||
|
|
||||||
|
Since the Java client matches the Javascript client quite closely, most of the changes listed in the migration guide [here](https://socket.io/docs/v3/migrating-from-2-x-to-3-0) also apply to the Java client:
|
||||||
|
|
||||||
|
- [A middleware error will now emit an Error object](#A_middleware_error_will_now_emit_an_Error_object)
|
||||||
|
- [The Socket `query` option is renamed to `auth`](#The_Socket_query_option_is_renamed_to_auth)
|
||||||
|
- [The Socket instance will no longer forward the events emitted by its Manager](#The_Socket_instance_will_no_longer_forward_the_events_emitted_by_its_Manager)
|
||||||
|
- [No more "pong" event](#No_more_.E2.80.9Cpong.E2.80.9D_event)
|
||||||
|
|
||||||
|
Additional changes which are specific to the Java client:
|
||||||
|
|
||||||
|
- [An `extraHeaders` option is now available](#An_extraHeaders_option_is_now_available)
|
||||||
|
|
||||||
|
### A middleware error will now emit an Error object
|
||||||
|
|
||||||
|
The `ERROR` event is renamed to `CONNECT_ERROR` and the object emitted is now a `JSONObject`:
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```java
|
||||||
|
socket.on(Socket.EVENT_ERROR, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
String error = (String) args[0];
|
||||||
|
System.out.println(error); // not authorized
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
```java
|
||||||
|
socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
JSONObject error = (JSONObject) args[0];
|
||||||
|
String message = error.getString("message");
|
||||||
|
System.out.println(error); // not authorized
|
||||||
|
|
||||||
|
JSONObject data = error.getJSONObject("data"); // additional details (optional)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### The Socket `query` option is renamed to `auth`
|
||||||
|
|
||||||
|
In previous versions, the `query` option was used in two distinct places:
|
||||||
|
|
||||||
|
- in the query parameters of the HTTP requests (`GET /socket.io/?EIO=3&abc=def`)
|
||||||
|
- in the Socket.IO handshake
|
||||||
|
|
||||||
|
Which could lead to unexpected behaviors.
|
||||||
|
|
||||||
|
New syntax:
|
||||||
|
|
||||||
|
```java
|
||||||
|
IO.Options options = new IO.Options();
|
||||||
|
options.query = singletonMap("abc", singletonList("def")); // included in the query parameters
|
||||||
|
options.auth = singletonMap("token", singletonList("1234")); // included in the Socket.IO handshake
|
||||||
|
|
||||||
|
Socket socket = IO.socket("https://example.com", options);
|
||||||
|
```
|
||||||
|
|
||||||
|
### The Socket instance will no longer forward the events emitted by its Manager
|
||||||
|
|
||||||
|
In previous versions, the Socket instance emitted the events related to the state of the underlying connection. This will not be the case anymore.
|
||||||
|
|
||||||
|
You still have access to those events on the Manager instance (the `io()` method of the socket) :
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```java
|
||||||
|
socket.on(Socket.EVENT_RECONNECT_ATTEMPT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... objects) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
```java
|
||||||
|
socket.io().on(Manager.EVENT_RECONNECT_ATTEMPT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... objects) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Here is the updated list of events emitted by the Manager:
|
||||||
|
|
||||||
|
| Name | Description | Previously (if different) |
|
||||||
|
| ---- | ----------- | ------------------------- |
|
||||||
|
| open | successful (re)connection | - |
|
||||||
|
| error | (re)connection failure or error after a successful connection | connect_error |
|
||||||
|
| close | disconnection | - |
|
||||||
|
| reconnect_attempt | reconnection attempt | reconnect_attempt & reconnecting | - |
|
||||||
|
| reconnect | successful reconnection | - |
|
||||||
|
| reconnect_error | reconnection failure | - |
|
||||||
|
| reconnect_failed | reconnection failure after all attempts | - |
|
||||||
|
|
||||||
|
Here is the updated list of events emitted by the Socket:
|
||||||
|
|
||||||
|
| Name | Description | Previously (if different) |
|
||||||
|
| ---- | ----------- | ------------------------- |
|
||||||
|
| connect | successful connection to a Namespace | - |
|
||||||
|
| connect_error | connection failure | error |
|
||||||
|
| disconnect | disconnection | - |
|
||||||
|
|
||||||
|
|
||||||
|
And finally, here's the updated list of reserved events that you cannot use in your application:
|
||||||
|
|
||||||
|
- `connect` (used on the client-side)
|
||||||
|
- `connect_error` (used on the client-side)
|
||||||
|
- `disconnect` (used on both sides)
|
||||||
|
- `disconnecting` (used on the server-side)
|
||||||
|
- `newListener` and `removeListener` (EventEmitter [reserved events](https://nodejs.org/api/events.html#events_event_newlistener))
|
||||||
|
|
||||||
|
```java
|
||||||
|
socket.emit("connect_error"); // will now throw an exception
|
||||||
|
```
|
||||||
|
|
||||||
|
### No more "pong" event
|
||||||
|
|
||||||
|
In Socket.IO v2, you could listen to the `pong` event on the client-side, which included the duration of the last health check round-trip.
|
||||||
|
|
||||||
|
Due to the reversal of the heartbeat mechanism (more information [here](https://socket.io/blog/engine-io-4-release/#Heartbeat-mechanism-reversal)), this event has been removed.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```java
|
||||||
|
socket.once(Socket.EVENT_PONG, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
long latency = (long) args[0];
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
There is no similar API in the new release.
|
||||||
|
|
||||||
|
### An `extraHeaders` option is now available
|
||||||
|
|
||||||
|
This is a more straightforward way to provide headers that will be included in all HTTP requests.
|
||||||
|
|
||||||
|
```java
|
||||||
|
IO.Options options = new IO.Options();
|
||||||
|
options.extraHeaders = singletonMap("Authorization", singletonList("Bearer abcd"));
|
||||||
|
|
||||||
|
Socket socket = IO.socket("https://example.com", options);
|
||||||
|
```
|
||||||
|
|
||||||
|
Or with the new builder syntax:
|
||||||
|
|
||||||
|
```java
|
||||||
|
IO.Options options = IO.Options.builder()
|
||||||
|
.setExtraHeaders(singletonMap("Authorization", singletonList("Bearer abcd")))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Socket socket = IO.socket("https://example.com", options);
|
||||||
|
```
|
||||||
@@ -8,6 +8,10 @@
|
|||||||
<version>1.9</version>
|
<version>1.9</version>
|
||||||
</skin>
|
</skin>
|
||||||
|
|
||||||
|
<bannerLeft>
|
||||||
|
<name>Socket.IO Java client</name>
|
||||||
|
</bannerLeft>
|
||||||
|
|
||||||
<custom>
|
<custom>
|
||||||
<fluidoSkin>
|
<fluidoSkin>
|
||||||
<gitHub>
|
<gitHub>
|
||||||
@@ -22,6 +26,11 @@
|
|||||||
<menu name="Overview">
|
<menu name="Overview">
|
||||||
<item name="Installation" href="./installation.html"/>
|
<item name="Installation" href="./installation.html"/>
|
||||||
<item name="Usage" href="./usage.html"/>
|
<item name="Usage" href="./usage.html"/>
|
||||||
|
<item name="Migrating from 1.x" href="./migrating_from_1_x.html"/>
|
||||||
|
</menu>
|
||||||
|
|
||||||
|
<menu name="Miscellaneous">
|
||||||
|
<item name="Changelog" href="./changelog.html"/>
|
||||||
<item name="Javadoc" href="./apidocs/index.html"/>
|
<item name="Javadoc" href="./apidocs/index.html"/>
|
||||||
</menu>
|
</menu>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user