Socket
Socket
Sign inDemoInstall

cookiesync

Package Overview
Dependencies
3
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    cookiesync

a lightweight module to sync JS objects in realtime across tabs / windows of a browser.


Version published
Maintainers
1
Created

Readme

Source

NPM

serversync

a lightweight module to sync JS objects in realtime across tabs / windows of a browser COOKIE FALLBACK VERSION.

Features
  • Uses local storage event emitters to sync objects in realtime across tabs.
  • Never calls the tab that the event occurred on.
  • Falls back to cookie polling internally if using an unsupported browser (IE 9+ / Edge).
  • Isomorphic.
  • Tested with mocha.

Build Status codecov

NPM

Install

npm i -S cookiesync

How to use

import cookiesync from 'cookiesync'

/** Create an action that will trigger a sync to other tabs. */
const action = (userID, first, last) => ({ userID, first, last })

/** Create a handler that will run on all tabs that did not trigger the sync. */
const handler = (value, old, url) => {
  console.info(`Another tab at url ${url} switched user from "${old.first} ${old.last}" to "${value.first} ${value.last}".`)
  // do something with value.userID
}

/** Create a synchronizer. cookiesync supports N number of synchronizers for different things across your app. */
const usersync = cookiesync('user', action, handler)

/** Start synchronizing. */
usersync.start()

/** IE / Edge do not support local storage across multiple tabs. cookiesync will automatically fallback to a cookie polling mechanism here. You don't need to do anything else. */
if(usersync.isFallback)
  console.warn('browser doesnt support local storage synchronization, falling back to cookie synchronization.')

/** Trigger an action that will get handled on other tabs. */
usersync.trigger(1, 'jimmy', 'john')

setTimeout(() => {
  /** Trigger another action in 5 seconds. */
  usersync.trigger(2, 'jane', 'wonka')
}, 5000)

setTimeout(() => {
  /** If its still running, stop syncing in 10 seconds. */
  if(usersync.isRunning)
    usersync.stop()
}, 10000)

Documentation

cookiesync(key: string, action: (...args) => payload, handler: payload => {}, [opts: Object]): { start, stop, trigger, isRunning, isFallback }

opts

nametypedefaultdescription
tracingbooleanfalsetoggles tracing for debugging purposes
loggerObjectconsolethe logger object to trace to
loglevelstring'info'the log level to use when tracing (error, warn, info, trace)

IE / Edge fallback props for cookiesync

nametypedefaultdescription
pollFrequencynumber3000the number in milliseconds that should be used for cookie polling
idLengthnumber8the number of characters to use for tracking the current instance (tab)
pathstring'/'The path to use for cookies
securebooleanfalseWhether to set the secure flag on cookies or not (not recommended)
httpOnlybooleanfalseWhether to set the http only flag on cookies or not

Keywords

FAQs

Last updated on 29 Jan 2017

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc