New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@yomo/presence

Package Overview
Dependencies
Maintainers
2
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@yomo/presence

Edge Infra for Realtime Web Applications, geo-distributed architecture ⚡️

  • 2.2.6
  • npm
  • Socket score

Version published
Weekly downloads
48
increased by20%
Maintainers
2
Weekly downloads
 
Created
Source

🧬 Introduction

Presencejs is a JavaScript library that enables the creation of real-time web applications with a secure, low-latency, and high-performance geo-distributed architecture.

Key Features:

  • Geo-distributed Architecture: Deploy your real-time backend close to users all over the world for better performance.
  • WebTransport Support: WebTransport is an new API that offers low-latency, bidirectional, client-server messaging.
  • Secure, low-latency, and high-performance: PresenceJS prioritizes security, speed, and performance for a seamless user experience.
  • Real-time and collaborative experience: With PresenceJS, components receive data flow in real time, ensuring fast and reactive UI by offering the flexibility to send either unreliable or reliable data
  • Easy to use: PresenceJS is simple to implement, making it an accessible solution for developers.
  • Free for self-managed hosting: PresenceJS is free to use for self-managed hosting, making it an affordable choice for projects of any size.

🌟 Showcase

These React Serverless Components are built with presencejs:

👯‍♀️ GroupHug

Live collaborator avatars for multiplayer web apps

image
  • Preview
  • Source code: ./components/react/grouphug-react

🥷🏼 Quick Start

1. Add presencejs to your web app

Using npm

$ npm i --save @yomo/presence

Using yarn

$ yarn add @yomo/presence

Using pnpm

$ pnpm i @yomo/presence
Create a Presence instance
import Presence from '@yomo/presence';

// create an instance.
const p = new Presence('https://prsc.yomo.dev', {
  url: process.env.NEXT_PUBLIC_PRESENCE_URL,
  publicKey: process.env.NEXT_PUBLIC_PRESENCE_PUBLIC_KEY,
  id,
  appId: process.env.NEXT_PUBLIC_APP_ID,
  debug: true,
});

p.on('connected', () => {
    console.log('Connected to server: ', p.host);
});
Create Channel

add subscribe to peers online event:

const c = p.joinChannel('group-hug', myState);

c.subscribePeers((peers) => {
    peers.forEach((peer) => {
      console.log(peer + " is online")
    }
});
Broadcast messages to all peers in this channel
const cb = () => {
  const state = document.hidden ? 'away' : 'online';
  c.broadcast('hidden-state-change', { state });
};
document.addEventListener('visibilitychange', cb)
Subscribe messages from the other peers
const unsubscribe = channel.subscribe(
    'hidden-state-change',
    ({ payload, peerState }) => {
        console.log(`${peerState.id} change visibility to: ${payload}`)
    })

2. Start prscd backend service

see prscd

🤹🏻‍♀️ API

Presence

  • joinChannel: return a Channel object

Channel

  • subscribePeers: observe peers online and offline events.
  • broadcast: broadcast events to all other peers.
  • subscribe: observe events indicated
  • leave: leave from a Channel

🏡 Self-managed hosting

Tutorial: Single node on Digital Ocean

Tutorial: Geo-distributed system on AWS

Tutorial: Geo-distributed system on Azure

License

The MIT License.

Keywords

FAQs

Package last updated on 13 Jul 2023

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc