gbf-raid-server
v0.1.0
Published
gbf-raid-server ---
Downloads
10
Readme
gbf-raid-server
node-twitterとsocket.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
インスタンスとして
server
にgbf-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'}, {...}] })
client
へgbf-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 [email protected]:59naga/gbf-raid-server.git
cd gbf-raid-server
yarn
yarn test
Lincense
MIT