Skip to content

Latest commit

 

History

History
75 lines (53 loc) · 1.58 KB

File metadata and controls

75 lines (53 loc) · 1.58 KB

solid-ws

Node/Javascript implementation of Websockets for Solid

Usage

Simple way

var ldnode = require('ldnode')

var server = ldnode.createServer({live: true})

server.listen(port, function () {
  console.log('Solid server started')
})

Short way

var SolidWs = require('solid-ws')
var ldnode = require('ldnode')

var server = ldnode.createServer()
solidWs(server)

server.listen(port, function () {
  console.log('Solid server started')
})

Long way

var SolidWs = require('solid-ws')
var ldnode = require('ldnode')
var express = require('express')
var https = require('https')

var app = express()
app.use('/databox', ldnode())
var server = https.createServer({/* your settings*/}, app)

server.listen(port, function () {
  console.log('Solid server started')
})

// Attach WS to solid
solidWs(server, app)

With authorization

You can pass an authorize callback to control which subscriptions are allowed:

var SolidWs = require('solid-ws')

var solidWs = SolidWs(server, app, {
  authorize: function (iri, req, callback) {
    // iri: the resource URL being subscribed to
    // req: the HTTP upgrade request (for auth headers/cookies)
    // callback(err, allowed): call with allowed=true to permit, false to deny

    checkUserAccess(iri, req, function (err, hasAccess) {
      callback(err, hasAccess)
    })
  }
})

If authorization fails, the client receives err <url> forbidden instead of ack.