Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

react-hermod-js

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-hermod-js

React utilities for hermod-js

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
6
100%
Maintainers
1
Weekly downloads
 
Created
Source

Hermod React

React hooks and context for hermod-js

MIT license.

Install

hermod-js is a peer dependency, so you need to install that too. This is intentional to make switching versions easier, as well as using hermod-js directly outside this React wrapper (should you need to).

npm install react-hermod-js hermod-js
yarn add react-hermod-js hermod-js

The package comes with typings built-in.

Usage

The point of Hermod is to have a single WebSocket connection between a client and a server. This package uses a context provider to accomplish that.

In the main file of your app (e.g. index.tsx or App.tsx) wrap your app inside HermodProvider and pass a ServerConfig (from hermod-js) and JWT string as props:

import { HermodProvider } from 'react-hermod-js';

const App = () => {
    // HermodProvider will automatically connect to the configured server,
    // and reconnect if the config or token changes.
    return <HermodProvider
        config={{
            hostname: "example.com",
            port: 443,
            secure: true,
            path: "/hermod",
            timeout: 5000,
        }}
        // token is optional
        token={"eyJ..."}
    >
        <RestOfYourApp />
    </HermodProvider>
}

Everything nested inside HermodProvider can now access these hooks:

import { useHermodContext, useHermodRequest } from 'react-hermod-js';

const MyPage = () => {
    const [webSocketRouter, globalError1] = useHermodContext()

    // useHermodRequest takes a Hermod compiler-generated endpoint function
    // as an argument. It infers the typings from that, so lastMessage and send()
    // should be typed correctly.
    const {
        lastMessage,
        isOpen,
        send,
        sessionError,
        globalError,
    } = useHermodRequest(requestMyFavouriteEndpoint)
    
    return <>
        <p>
            Last message: {lastMessage}
        </p>
    </>
}

Caveats

React Strict Mode: Due to the way Hermod handles session handshakes, there's no sensible way to rapidly create and then close a session, as would be the case with the double invocations enforced by React Strict Mode. Therefore, this package currently doesn't support it.

FAQs

Package last updated on 05 Jun 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts