snapper-consumer
v1.3.6
Published
snapper consumer client for node.js and browser.
Downloads
28
Readme
snapper-consumer
snapper consumer client for node.js and browser.
Snapper-consumer
is tested in snapper-core
Snapper-core Teambition push messaging service
Demo
# module: socket.coffee
define((require, exports, module) ->
Backbone = require('backbone')
Consumer = require('consumer')
http = require('lib/http-thunks')
class SocketClient extends Consumer
onmessage: (event) ->
if event.type isnt 'request'
return @onerror(new Error('It is not a request: ' + JSON.stringify(event.data)))
# parse multi sub-messages
while event.data.params.length
try
data = JSON.parse(event.data.params.shift())
if data and typeof data.e is 'string'
@trigger(data.e, data.d)
else
@onerror(new Error('Unprocessable entity: ' + JSON.stringify(data)))
catch err
@onerror(err)
_join: (room, consumerId) ->
# join a room by API server
http.post("#{room}/subscribe", {consumerId: consumerId})()
_.extend(SocketClient.prototype, Backbone.Events)
return new SocketClient()
)
# ---------------------------
# connect to server
socketClient.connect(teambition.pushHost, {
path: '/websocket'
token: teambition.user.get('snapperToken')
})
# listen for messages
socketClient.on('xxx', (data) -> )
API
var Consumer = require('snapper-consumer')
new Consumer([url][, options])
var consumer = new Consumer()
url
:String
, Snapper server host.options
:Object
,engine.io-client
options, but addedoptions.token
.
consumer.prototype.onopen()
consumer.prototype.onclose()
consumer.prototype.onerror(error)
error
:Error Object
.
Default error listener, overwrite it in production.
consumer.prototype.onmessage(event)
event.id
:String|Number|null|undefined
, JSON-RPC idevent.data
:Object
, JSON-RPC object.event.type
:String
, JSON-RPC type,'invalid'
,'notification'
,'success'
,'error'
,'request'
.
Default messages listener, overwrite it in production.
consumer.prototype.getToken()
Default getToken
, overwrite it in production.
Consumer.prototype.getToken = function () {
return this.options.token
}
consumer.prototype.request(method[, params][, callback])
method
:String
, JSON-RPC request method.params
:Mixed
, JSON-RPC request params.callback
:function
, response callback.
Send a JSON-RPC request to server.
consumer.prototype.join(room), consumer.prototype._join(room, consumerId)
room
:String
, room name.
_join
method should be implemented for this method.
consumer.prototype._respond(event)
It is used to respond server's request.
consumer.prototype.connect([url][, options])
url
:String
, Snapper server host.options
:Object
,engine.io-client
options, but addedoptions.token
.
Connect to server. The arguments is the same as constructor, should be provided in constructor or here.
consumer.prototype.close()
Close the client.