Giter Club home page Giter Club logo

jws's Introduction

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 to keep things simple.

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<JsonObject> future = new CompletableFuture<>();
        JsonObject message = new JsonObject();
        message.addProperty("event", "ping");

        try (WebSocketClient<JsonObject, JsonObject> 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. Instructions for your build tool can be found there.

jws's People

Contributors

alexsobiek avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.