httpリクエストを直接送信していたesp8266がありますhttp://fcm.googleapis.com/fcm/send
が、Googleがhttp経由でリクエストを送信することを許可しなくなったようであるため、新しい解決策を見つける必要があります。
esp8266 が https 経由でリクエストを直接送信するパスを開始しましたが、小さな例で動作している間、https リクエストに必要なメモリ フットプリントが完全なアプリケーションでは多すぎて、esp8266 がクラッシュしてしまいます。メッセージをサーバーに直接送信し続けることを可能にする可能性のある方法はまだいくつかありますが、http経由でローカルの「サーバー」ラズベリーパイにリクエストを送信することでこれを解決したいと思います。 https 経由でリクエストします。
小さな Web サーバーといくつかのコードを実行してリクエストを処理することもできますが、これはまさにトラフィック サーバーが実行できるようにする必要があるようです。
これはワンライナーでいいと思いました。remap.config
以下のファイルを追加しました。
redirect http://192.168.86.77/fcm/send https://fcm.googleapis.com/fcm/send
192.168.86.77
私のラズベリーパイのローカルアドレスはどこですか.
リクエストを送信するとhttp://192.168.86.77/fcm/send:8080
、次のものが返されます。
HTTP/1.1 404 Not Found
Date: Fri, 20 Sep 2019 16:22:14 GMT
Server: Apache/2.4.10 (Raspbian)
Content-Length: 288
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /fcm/send:8080 was not found on this server.</p>
<hr>
<address>Apache/2.4.10 (Raspbian) Server at localhost Port 80</address>
</body></html>
8080 が適切なポートだと思います。これは、私がそうあるべきだと思っていたライナーではないと思います。
これは apache-traffic-controller に適していますか? 誰かが私が間違っていることと、私の目標を達成するための正しい方法を教えてもらえますか?
アップデート:
以下の Miles Libbey の回答に基づいて、Arduino/esp8266 コードに次の更新を行う必要がありました。
変化する:
http_.begin("http://fcm.googleapis.com/fcm/send");
に:
http_.begin("192.168.86.77", 8080, "http://192.168.86.77/fcm/send");
ここで、http_ は HTTPClient のインスタンスです
ラズベリーパイにtrafficserverをインストールした後、次の2行を/etc/trafficserver/remap.config
map http://192.168.86.77/fcm/send https://fcm.googleapis.com/fcm/send
reverse_map https://fcm.googleapis.com/fcm/send http://192.168.86.77/fcm/send
このreverse_map
行は、fcm からフィードバックを得たい場合 (投稿が成功したかどうかなど) にのみ必要であることに注意してください。