PHP
StreamingAPI
mastodon
qiitadon

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

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

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

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

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

参考文献