samjs-client

0.3.0 • Public • Published

samjs-client

Created to connect Socket.io, AngularJS and MongoDB.

Now it is database and view framework agnostic.

Server-side: samjs

Getting Started

npm install --save samjs
npm install --savedev samjs-client

Simple example with koa server

samjs = require "samjs"
koa = require("koa")()

server = require("http").createServer(koa.callback())

samjs
.plugins()
.options()
.configs({name:"item"})
.models()
.startup(server)

server.listen(3000)
#to close
#samjs.shutdown()

# in browser with webpack
samjs = require("samjs-client")()
samjs.config.set "item", "value"
.then ->
  #success
.catch ->
  #failed

# some other client  
samjs.config.on "item", -> #item changed
  samjs.config.get "item"
  .then (response) ->
    response == "value" # true
  .catch ->
    #failed

docs

samjs-client is rather simple. It contains:

  • some logic to efficently use socket.io
  • an interface to configure and install a samjs instance
  • an interface to access config objects
  • a simple plugin interface

usage of socket.io

samjs.io.onceLoaded # promise which is fullfilled on successfull connect
samjs.io.socket # raw socket.io-client instance
samjs.io.nsp("/someNSP").socket # raw namespace socket
# wrapper function for messaging
samjs.io.nsp("/someNSP).getter("set","someValue")
.then(function(response){#success})
.catch(function(e){#failed})

install interface

State management

samjs.install.onceConfigure
.then(function(){
  # samjs is in configure mode
  })
.catch(function(){
  # samjs is already configured
  })

samjs.install.onceConfigured
.then(function(){
  # samjs is successfully configured
  })

samjs.install.onceInstall
.then(function(){
  # samjs is in install mode
  })
.catch(function(){
  # samjs is already installed
  })

samjs.install.onceInstalled
.then(function(){
  # samjs is successfully installed
  })

configure interface (only available in configure mode)

// server-side
samjs.configs({
  name:"someConfigObject",
  value:false,
  isRequired:true,
  test:function(value){
    return new samjs.Promise(function(resolve,reject){
      if (value) {
        resolve()
      } else {
        reject()
      }
    })
  }
})

// client-side
samjs.install.get("someConfigObject").then(function(response){
  response == false // true
  })
.catch(function(){
  // someError
  })

samjs.install.test("someConfigObject",true).then(function(){
  // test passed
  })
.catch(function(){
  // test failed
  })

samjs.install.set("someConfigObject",true).then(function(){
  // test passed and successfully set
  })
.catch(function(){
  // failed to set
  })

config interface

samjs.configs({
  name:"someConfigObject",
  value:false,
  test:function(value){
    return new samjs.Promise(function(resolve,reject){
      if (value) {
        resolve()
      } else {
        reject()
      }
    })
  }
})

// client-side
samjs.config.get("someConfigObject").then(function(response){
  response == false // true
  })
.catch(function(){
  // someError
  })

samjs.config.test("someConfigObject",true).then(function(){
  // test passed
  })
.catch(function(){
  // test failed
  })

samjs.config.set("someConfigObject",true).then(function(){
  // test passed and successfully set
  })
.catch(function(){
  // failed to set
  })

samjs.config.on("someConfigObject", function(){
  // someConfigObject changed
})

plugin interface

takes a one or more client plugins or an array of client plugins.

samjs.plugins(require("samjs-auth-client"),require("samjs-mongo-client"))
// or
samjs.plugins([require("samjs-auth-client"),require("samjs-mongo-client")])

Readme

Keywords

none

Package Sidebar

Install

npm i samjs-client

Weekly Downloads

1

Version

0.3.0

License

none

Last publish

Collaborators

  • paulpflug