@openrealm/web
v0.7.0
Published
**Deprecation Notice:** grpc-web has been deprecated and is no longer supported. Please use the [HTTP API](./README.md) instead. This original document has been kept only for historical reference.
Downloads
3
Readme
@openrealm/hub-web
Deprecation Notice: grpc-web has been deprecated and is no longer supported. Please use the HTTP API instead. This original document has been kept only for historical reference.
A lightweight, fast Typescript interface for Openrealm Hubs. Designed to work with Hubble and any other Hub that implements the Openrealm protocol.
Features
- Call any Hub endpoint from a browser environment using gRPC-Web.
- Serializes and deserializes Openrealm protobufs into Javascript objects.
- Has helpers to create and sign Openrealm messages.
- Written entirely in TypeScript, with strict types for safety.
Installation
Install @openrealm/hub-web with the package manager of your choice
npm install @openrealm/hub-web
yarn add @openrealm/hub-web
pnpm install @openrealm/hub-web
Documentation
The @openrealm/hub-web APIs are largely the same as @openrealm/hub-nodejs. Read the @openrealm/hub-nodejs documentation and browse code examples. We're also including sample @openrealm/hub-web code below as well as a list of differences with the other package.
Getting start: fetching casts
import { getHubRpcClient } from '@openrealm/hub-web';
(async () => {
const client = getHubRpcClient('https://testnet1.openrealm.xyz:2285');
const castsResult = await client.getCastsByQid({ qid: 15 });
castsResult.map((casts) => casts.messages.map((cast) => console.log(cast.data?.castAddBody?.text)));
})();
Instantiating a client
The method to construct a Hub gRPC client differs from @openrealm/hub-nodejs. Use getHubRpcClient
, which returns a Hub gRPC-Web client. Make sure that the gRPC server you're connecting to implements a gRPC-Web proxy. The standard is to expose the gRPC-Web proxy at port 2285.
Usage
import { getHubRpcClient } from '@openrealm/hub-web';
(async () => {
const client = getHubRpcClient('https://testnet1.openrealm.xyz:2285');
// If you're using gRPC-Web from a Nodejs environment, add a second false parameter
// const nodeClient = getHubRpcClient('https://testnet1.openrealm.xyz:2285', false);
})();
Returns
| Type | Description |
| :------------- | :------------------------------ |
| HubRpcClient
| A new gRPC-Web Client instance. |
Parameters
| Name | Type | Description |
| :---------- | :-------- | :------------------------------------------------------------------------- |
| url
| string
| Address and RPC port string (e.g. https://testnet1.openrealm.xyz:2285
) |
| isBrowser
| boolean
| Optional parameter indicating whether to use the gRPC-Web Nodejs transport |
Streaming hub events
gRPC-Web hub event streams are instances of the Observable class in @openrealm/hub-web.
Usage
import { getHubRpcClient } from '@openrealm/hub-web';
async () => {
const client = getHubRpcClient('https://testnet1.openrealm.xyz:2285');
const result = client.subscribe({ eventTypes: [HubEventType.PRUNE_MESSAGE], fromId: 0 });
result.map((observable) => {
observable.subscribe({
next(event: HubEvent) {
console.log('received event', event);
},
error(err) {
console.error(err);
},
});
});
};
Returns
| Type | Description |
| :-------------------------------- | :---------------------------------------------------------------------------- |
| HubResult<Observable<HubEvent>>
| An Observable stream wrapped in a Result |
Parameters
| Name | Type | Description |
| :----------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| fromId
| number
| (Optional) ID of the hub event to start streaming from. A fromId
of 0
will stream all events from the hub, and passing no fromId
will start the stream from the present moment. |
| eventTypes
| HubEventType[]
| Array of hub event types to return. If eventTypes
is []
, all event types will be returned. |
License
MIT License