0.1.0 • Published 7 years ago
gbf-raid-server v0.1.0
gbf-raid-server
node-twitterとsocket.ioのグルーコードをグラブル用に調整し、クラスと関数で提供します。
# export GBFR_KEYS=consumer_key:consumer_secret:access_token_key:access_token_secret
# node --experimental-modules app.mjsimport { 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-serverAPI
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 git@github.com:59naga/gbf-raid-server.git
cd gbf-raid-server
yarn
yarn testLincense
MIT