Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alexsobiek/jws
Java WebSocket Client Library
https://github.com/alexsobiek/jws
java netty websocket-client
Last synced: 4 days ago
JSON representation
Java WebSocket Client Library
- Host: GitHub
- URL: https://github.com/alexsobiek/jws
- Owner: alexsobiek
- Created: 2023-10-30T02:53:30.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-03T00:05:31.000Z (about 1 year ago)
- Last Synced: 2024-10-31T04:21:48.657Z (about 2 months ago)
- Topics: java, netty, websocket-client
- Language: Java
- Homepage:
- Size: 77.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JWS
JWS is a very simple & modern Java websocket client using Netty.## Usage
In this example, we're going to connect to the Postman Echo Websocket service, send a message to it, and wait for the
echoed message to be returned. This example makes use of the [Gson Codec](https://github.com/alexsobiek/jws/tree/main/codec/gson)
to keep things simple.```java
import com.alexsobiek.jws.WebSocketClient;
import com.alexsobiek.jws.WebSocketClientHandler;
import com.alexsobiek.jws.gson.GsonWebSocketCodec;
import com.google.gson.JsonObject;
import io.netty.channel.ChannelHandlerContext;import java.net.URI;
import java.util.concurrent.CompletableFuture;class Example {
public static void main(String[] args) {
CompletableFuture future = new CompletableFuture<>();
JsonObject message = new JsonObject();
message.addProperty("event", "ping");try (WebSocketClient client = new WebSocketClient<>(new URI("wss://ws.postman-echo.com/raw"), new GsonWebSocketCodec(), new WebSocketClientHandler<>() {
// Here we've created an inline WebSocketClientHandler instance, but you can create your own class that extends WebSocketClientHandler
// and override the onMessage and onException methods to handle messages and exceptions respectively. This is just a simple example.
public void onMessage(ChannelHandlerContext ctx, JsonObject message) { // Called when a message is received
future.complete(message); // Complete future with message
}public void onException(ChannelHandlerContext ctx, Throwable exception) { // Called when an exception is thrown
future.completeExceptionally(exception); // Complete future with exception
}
})) {
try {
client.open().sync(); // Open and wait for connection
client.writeAndFlush(message); // Send message
System.out.printf("Sent message: %s", message.toString());
while (!future.isDone()) Thread.onSpinWait(); // Keep connection open until message is received
client.close(); // Close connection
} catch (Exception e) {
throw new RuntimeException(e);
}JsonObject response = future.get(); // Wait for message to be received
System.out.printf("Received message: %s", response.toString());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
```## Depending on JWS
JWS can currently be found at [https://jitpack.io/#com.alexsobiek/JWS](https://jitpack.io/#com.alexsobiek/JWS).
Instructions for your build tool can be found there.