PHP
StreamingAPI
mastodon
qiitadon

PHPでQiitadonのStreaming APIを受信する。

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

項目 備考
ホスト名 streaming.qiitadon.com qiitadon.comは CDN を通すので、ストリーミング用のドメインが用意されているようです。
ポート 4000 一般的には 443

以下は、簡単な動作を確認する PHP スクリプトです。実行後、数秒待つとストリームが始まります。(Mastodon は SSL接続が必須なので OpenSSL が必要です)

<?php

// ソケットオープン
$hostname = 'ssl://streaming.qiitadon.com';
$port     = '4000';
$fp       = fsockopen($hostname, $port, $errno, $errstr, 5);

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);

参考文献