samjs-client
v0.2.1samjs-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")])