gbf-raid-server

0.1.0 • Public • Published

gbf-raid-server

Npm version Build Status

node-twittersocket.ioのグルーコードをグラブル用に調整し、クラスと関数で提供します。

# export GBFR_KEYS=consumer_key:consumer_secret:access_token_key:access_token_secret 
# node --experimental-modules app.mjs 
import { createServer } from 'http';
import createIoServer from 'socket.io';
import createIoClient from 'socket.io-client';
import createRaidServer, { parseAll } from 'gbf-raid-server/mjs';
 
const port = process.env.PORT || 8080;
 
const raidServer = createRaidServer(process.env.GBFR_KEYS);
const server = createServer();
 
server.listen(port, async () => {
  raidServer.setCache(parseAll(await raidServer.fetch()));
  raidServer.subscribe(createIoServer(server));
 
  createIoClient(`http://localhost:${port}`)
    .emit('gbf-raid-server:cache', (error, tweets) => {
      console.log(tweets);
      // [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]
    })
    .on('gbf-raid-server:tweet', (tweet) => {
      console.log(tweet);
      // {id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}
    });
});

インストール

npm install gbf-raid-server
# or 
yarn add gbf-raid-server

API

createRaidServer(TWITTER_OAUTH_KEYS, Options={}): raidServer

第一引数にtwitter-apiの各4キーを:で連結して文字列で渡し、raidServerインスタンスを返します。

const raidServer = createRaidServer('consumer_key:consumer_secret:access_token_key:access_token_secret');

raidServer.subscribe(ioServer): this

第一引数をsocket.ioインスタンスとして

  • servergbf-raid-server:cacheイベントを設定します。このイベントがclientから送られると、serverはコールバック関数の第二引数に即座にキャッシュを渡します。
    createIoClient(`http://localhost:${port}`)
      .emit('gbf-raid-server:cache', (error, tweets) => {
        console.log(tweets);
        // [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', createdAt: '2018-07-06 10:26:56'}, {...}]
      })
  • clientgbf-raid-server:tweetイベントを送信します。このイベントはstreaming-apiによって、救援ツイート1つにつき1イベントリアルタイムで発生します
    createIoClient(`http://localhost:${port}`)
      .on('gbf-raid-server:tweet', (tweet) => {
        console.log(tweet);
        // {id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', createdAt: '2018-07-06 10:26:56'}
      });

raidServer.setCache(Tweet[]): this

サーバーのキャッシュを第一引数に変更します。clientがサービスにアクセス時、過去のツイートを確認するために必要です。 .fetchを利用して定期的に更新してください。

raidServer.fetch(count = 100): Promise<Statuses[]>

過去のツイートをPromiseで取得します。返されるデータには救援データと関係のないメタ情報が多量に含まれるので、parseAll関数などで抽出してください。

parseAll(Statuses[]): Tweet[]

raidServer.fetchで取得したツイートのメタ情報を削除して新しい配列を返します。

parseAll(await raidServer.fetch());
// [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]

開発環境

下記がグローバルインストールされていることが前提です。

  • NodeJS v10.6.0
  • Yarn v1.8.0
git clone git@github.com:59naga/gbf-raid-server.git
cd gbf-raid-server
 
yarn
yarn test

Lincense

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i gbf-raid-server

Weekly Downloads

0

Version

0.1.0

License

MIT

Unpacked Size

35 kB

Total Files

10

Last publish

Collaborators

  • 59naga