59naga / gbf-raid-server

TwitterUserStream廃止に対応済み nodejs / socket.ioを使用してtwitterの救援ツイートを配信します

Home Page:https://gbf-raid-server.herokuapp.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

TwitterUserStream廃止に対応済み nodejs / socket.ioを使用してtwitterの救援ツイートを配信します

https://gbf-raid-server.herokuapp.com/


Languages

Language:JavaScript 100.0%