/Solid-Notification

Client library for Solid Notifications Protocol v0.2.0

Primary LanguageTypeScript

Solid Notifications

npm

This library implements subscribing to a Notication Channel following the Solid Notifications Protocol.

Installing

npm i solid-notification-client

Using the client

First identify a resource you are interested in, i.e. the topic. Next, identify the features which you want to be present in the notification channel.

Then you can use the following example code to set up the channel. In this code, a subscription is made for a WebSocketChannel2023.

import { Session } from '@rubensworks/solid-client-authn-isomorphic';
import { WebSocketChannel2023 } from 'solid-notification-client';
import { WebSocket } from 'ws';

async function main() {
    const topic = 'http://localhost:3000/'
    const features = {}
    const channel = new WebSocketChannel2023(new Session());
    const webSocketUrl = await channel.subscribe(topic, {})

    const socket = new WebSocket(webSocketUrl);
    socket.onmessage = (message) => console.log(message.data.toString());
} 
main()

Features

Following features might be supported by the Subscription Server (examples are given for each features).

{
    "accept": "text/turtle", 
    "startAt": "1988-03-09T14:48:00.000Z", // format xsd:dateTime
    "endAt": "1988-03-09T14:48:00.000Z", // format xsd:dateTime
    "state": "", // don't know 
    "rate": "PT1S" // format xsd:duration
}

See section 2.3.2 of the specification for more details

Setting up a solid server which supports the WebSocketChannel2023

Install the CSS that supports the Solid Notification Protocol.

npm i @solid/community-server https://github.com/CommunitySolidServer/CommunitySolidServer#feat/add-notification

Start a server without setup, with memory storage and with both WebSocketChannel2023 and WebHookSubscription2021 channel types for solid notifications:

wget https://raw.githubusercontent.com/woutslabbinck/Solid-Notification/main/config/memory-config.json
npx @solid/community-server -c memory-config.json 

Feedback and questions

Do not hesitate to report a bug.

Further questions can also be asked to Wout Slabbinck (developer and maintainer of this repository).