Edited at

Qiitadon の Streaming API を受信する時の注意点

More than 1 year has passed since last update.


TL;DR

Qiita の マストドン・インスタンス「Qiitadon」は、Pawoo などと Mastodon Streaming API のエンドポイントが以下のように異なっています。

項目

備考

ホスト名
streaming.qiitadon.com

qiitadon.comは CDN を通すので、ストリーミング用のドメインが用意されているようです。

ポート
4000
一般的には 443


PHP でストリーミングを受信するサンプル

以下は、簡単な動作を確認する PHP スクリプトです。macOS の場合は何もインストールしなくても動きます。

実行後、数秒待つとストリームが始まります。(Mastodon は SSL 接続が必須なので PHP の OpenSSL が有効である必要があります


sample.php

<?php

// ソケットの準備
$hostname = 'ssl://streaming.qiitadon.com';
$port = '4000';
$timeout = 5; //sec
$errno = '';
$errstr = '';

// ソケットオープン
$fp = fsockopen($hostname, $port, $errno, $errstr, $timeout);

if (! $fp) {
die("Error: {$errstr} ({$errno})");
}

// リクエストヘッダの準備
$method = 'GET';
$endpoint = '/api/v1/streaming/public';
$host = 'qiitadon.com'; //streaming.qiitadon.con でない
$user_agent = 'qithub-bot';

$req = [
"{$method} {$endpoint} HTTP/1.1",
"Host: {$host}",
"User-Agent: {$user_agent}",
];
$req = implode($req, "\r\n")."\r\n"."\r\n";

// GETリクエストを送信
fwrite($fp, $req);

// ストリーミングの読み込み
while (! feof($fp)) {
$read = fgets($fp);
print_r($read);
// バッファを出力(画面更新)
@ob_flush();
@flush();
}

fclose($fp);



動作確認済み環境


  • macOS HighSierra(OSX 10.13.6)


  • php --version: PHP 7.2.6 (cli)


参考文献