Package org.web3j.protocol.websocket
Class WebSocketService
- java.lang.Object
-
- org.web3j.protocol.websocket.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.
-
-
Constructor Summary
Constructors Constructor Description WebSocketService(java.lang.String serverUrl, boolean includeRawResponses)
WebSocketService(WebSocketClient webSocketClient, boolean includeRawResponses)
-
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>
Tsend(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.
-
-
-
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 interfaceWeb3jService
- Type Parameters:
T
- type of a data item returned by the request- Parameters:
request
- request to performresponseType
- 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 interfaceWeb3jService
- Type Parameters:
T
- type of a data item returned by the request- Parameters:
request
- request to performresponseType
- 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 interfaceWeb3jService
- 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 interfaceWeb3jService
- 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 interfaceWeb3jService
- Type Parameters:
T
- type of incoming event objects- Parameters:
request
- JSON-RPC request that will be send to subscribe to a stream of eventsunsubscribeMethod
- method that will be called to unsubscribe from a stream of notificationsresponseType
- 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 interfaceWeb3jService
-
-