Skip to content

bearyinnovative/bearychat-rtm-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BearyChat OpenAPI RTM Client

Compatible with Node.js, Webpack and Browserify.

@BearyChat Build Status npm version

Install

npm install bearychat-rtm-client --save

or with yarn

yarn add bearychat-rtm-client

Usage

API

RTMClient

constructor({ url, WebSocket })

Param Description
url a websocket url or a function returns a promise that resolves to a websocket url
WebSocket a W3C compatible WebSocket client implement

Browser usage:

RTMClient uses native WebSocket in browser.

import bearychat from 'bearychat';
import RTMClient from 'bearychat-rtm-client';
const RTMClientEvents = RTMClient.RTMClientEvents;

const client = new RTMClient({
  url() {
    return bearychat.rtm.start({token: '<your hubot token>'})
      .then(resp => resp.json())
      .then(data => data.ws_host);
  }
});

client.on(RTMClientEvents.ONLINE, function() {
  console.log('RTM online');
});

client.on(RTMClientEvents.OFFLINE, function() {
  console.log('RTM offline');
});

client.on(RTMClientEvents.EVENT, function(message) {
  console.log('event message received: ', message);
});

client.send({
  // your message body
});

Node.js usage:

RTMClient need a W3C compatible WebSocket client implement. ws version 3.0.0+ is recommended.

const bearychat = require('bearychat');
const RTMClient = require('bearychat-rtm-client');
const RTMClientEvents = RTMClient.RTMClientEvents;
const WebSocket = require('ws');

const client = new RTMClient({
  url: function() {
    return bearychat.rtm.start({token: '<your hubot token>'})
      .then(function (resp) {return resp.json()})
      .then(function (data) {return data.ws_host});
  },
  WebSocket: WebSocket
});

client.on(RTMClientEvents.ONLINE, function() {
  console.log('RTM online');
});

client.on(RTMClientEvents.OFFLINE, function() {
  console.log('RTM offline');
});

client.on(RTMClientEvents.EVENT, function(message) {
  console.log('event message received: ', message);
});

client.send({
  // your message body
});

Client events

Event Description
RTMClientEvents.ONLINE client connected
RTMClientEvents.OFFLINE client disconnected
RTMClientEvents.CLOSE client closed
RTMClientEvents.EVENT receive event message from server
RTMClientEvents.ERROR error occurred

Client state

                  INITIAL
                     +
        error        |
    +-------------+  |
    v             +  v        connect
RECONNECT+------->CONNECTING<---------+CLOSED
    ^                +                    ^
    |                |                    |
    |    server      |                    |
    |    close/      v        close       +
    +------------+CONNECTED+---------->CLOSING
         error

RTM events

RTM events

Examples

BearyChat shell client

LICENSE

MIT