У меня есть esp8266, который напрямую отправлял http-запросы на http://fcm.googleapis.com/fcm/send
, но, похоже, Google прекратил разрешать отправку запросов через http, мне нужно найти новое решение.
Я начал с того, чтобы esp8266 напрямую отправлял запрос через https, и хотя он работает на небольшом примере, объем памяти, необходимый для запроса https, слишком велик в моем полном приложении, и я в итоге вылетел.esp8266.Хотя есть еще несколько возможностей для изучения, которые могут позволить мне продолжать напрямую отправлять сообщения на сервер, я думаю, что я хотел бы решить эту проблему, отправив запрос через http на локальный «сервер» raspberry pi, и он должен отправитьзапрос через https.
Хотя я мог запустить небольшой веб-сервер и некоторый код для обработки запросов, похоже, что это именно то, что сервер трафика должен быть в состоянии сделать для меня.
Я думал, что это должен быть один лайнер.Я добавил следующий файл 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?Может ли кто-нибудь указать мне, что я делаю неправильно и как правильно достичь своей цели?
Обновление:
На основе приведенного ниже ответа Майлза Либби мне нужно было сделать следующее обновление:код 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 на мой Raspberry Pi мне нужно было добавить следующие две строки в /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, т.е. если сообщение было успешным или нет.