Class WebSocketService

  • All Implemented Interfaces:
    Web3jService

    public class WebSocketService
    extends java.lang.Object
    implements Web3jService
    Web socket service that allows to interact with JSON-RPC via WebSocket protocol.

    Allows to interact with JSON-RPC either by sending individual requests or by subscribing to a stream of notifications. To subscribe to a notification it first sends a special JSON-RPC request that returns a unique subscription id. A subscription id is used to identify events for a single notifications stream.

    To unsubscribe from a stream of notifications it should send another JSON-RPC request.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes resources used by the service.
      void connect()
      Connect to a WebSocket server.
      void connect​(java.util.function.Consumer<java.lang.String> onMessage, java.util.function.Consumer<java.lang.Throwable> onError, java.lang.Runnable onClose)  
      <T extends Response>
      T
      send​(Request request, java.lang.Class<T> responseType)
      Perform a synchronous JSON-RPC request.
      <T extends Response>
      java.util.concurrent.CompletableFuture<T>
      sendAsync​(Request request, java.lang.Class<T> responseType)
      Performs an asynchronous JSON-RPC request.
      BatchResponse sendBatch​(BatchRequest requests)
      Perform a synchronous JSON-RPC batch requests.
      java.util.concurrent.CompletableFuture<BatchResponse> sendBatchAsync​(BatchRequest requests)
      Performs an asynchronous JSON-RPC batch requests.
      <T extends Notification<?>>
      io.reactivex.Flowable<T>
      subscribe​(Request request, java.lang.String unsubscribeMethod, java.lang.Class<T> responseType)
      Subscribe to a stream of notifications.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • WebSocketService

        public WebSocketService​(java.lang.String serverUrl,
                                boolean includeRawResponses)
      • WebSocketService

        public WebSocketService​(WebSocketClient webSocketClient,
                                boolean includeRawResponses)
    • Method Detail

      • connect

        public void connect()
                     throws java.net.ConnectException
        Connect to a WebSocket server.
        Throws:
        java.net.ConnectException - thrown if failed to connect to the server via WebSocket protocol
      • connect

        public void connect​(java.util.function.Consumer<java.lang.String> onMessage,
                            java.util.function.Consumer<java.lang.Throwable> onError,
                            java.lang.Runnable onClose)
                     throws java.net.ConnectException
        Throws:
        java.net.ConnectException
      • send

        public <T extends Response> T send​(Request request,
                                           java.lang.Class<T> responseType)
                                    throws java.io.IOException
        Description copied from interface: Web3jService
        Perform a synchronous JSON-RPC request.
        Specified by:
        send in interface Web3jService
        Type Parameters:
        T - type of a data item returned by the request
        Parameters:
        request - request to perform
        responseType - class of a data item returned by the request
        Returns:
        deserialized JSON-RPC response
        Throws:
        java.io.IOException - thrown if failed to perform a request
      • sendAsync

        public <T extends Response> java.util.concurrent.CompletableFuture<T> sendAsync​(Request request,
                                                                                        java.lang.Class<T> responseType)
        Description copied from interface: Web3jService
        Performs an asynchronous JSON-RPC request.
        Specified by:
        sendAsync in interface Web3jService
        Type Parameters:
        T - type of a data item returned by the request
        Parameters:
        request - request to perform
        responseType - class of a data item returned by the request
        Returns:
        CompletableFuture that will be completed when a result is returned or if a request has failed
      • sendBatch

        public BatchResponse sendBatch​(BatchRequest requests)
                                throws java.io.IOException
        Description copied from interface: Web3jService
        Perform a synchronous JSON-RPC batch requests.
        Specified by:
        sendBatch in interface Web3jService
        Parameters:
        requests - requests to perform
        Returns:
        deserialized JSON-RPC responses
        Throws:
        java.io.IOException - thrown if failed to perform a batch request
      • sendBatchAsync

        public java.util.concurrent.CompletableFuture<BatchResponse> sendBatchAsync​(BatchRequest requests)
        Description copied from interface: Web3jService
        Performs an asynchronous JSON-RPC batch requests.
        Specified by:
        sendBatchAsync in interface Web3jService
        Parameters:
        requests - batch request to perform
        Returns:
        CompletableFuture that will be completed when a result is returned or if a request has failed
      • subscribe

        public <T extends Notification<?>> io.reactivex.Flowable<T> subscribe​(Request request,
                                                                              java.lang.String unsubscribeMethod,
                                                                              java.lang.Class<T> responseType)
        Description copied from interface: Web3jService
        Subscribe to a stream of notifications. A stream of notifications is opened by by performing a specified JSON-RPC request and is closed by calling the unsubscribe method. Different WebSocket implementations use different pair of subscribe/unsubscribe methods.

        This method creates an Flowable that can be used to subscribe to new notifications. When a client unsubscribes from this Flowable the service unsubscribes from the underlying stream of events.

        Specified by:
        subscribe in interface Web3jService
        Type Parameters:
        T - type of incoming event objects
        Parameters:
        request - JSON-RPC request that will be send to subscribe to a stream of events
        unsubscribeMethod - method that will be called to unsubscribe from a stream of notifications
        responseType - class of incoming events objects in a stream
        Returns:
        a Flowable instance that emits incoming events
      • close

        public void close()
        Description copied from interface: Web3jService
        Closes resources used by the service.
        Specified by:
        close in interface Web3jService