Poem/WebPush
WebPushって何?†
- Android端末とかChromeブラウザで、「通知を受け取る」にしておくと、サーバーサイドから通知をプッシュできる仕組みです。
- これを使って、自分サーバー上に通知サイトを用意して、サーバーからのいろんな通知をスマホで受け取ろうという実験です。
- (たとえば、サーバー障害発生などでZabbixのアラートが上がったら自分のスマホに知らせてくれる、的なものです)
さっそく実装†
- 続きは GitHub で
https://github.com/iruka-git/WebNotifySample
インストール前提条件†
- 自分サーバーはSSL有効でなければなりません。
- Apache + PHP7 が動いているものとします。
- Apacheの設置先ディレクトリは、説明の都合上、 /public/ とします。
インストール方法†
- (1)まず、 上記 GitHubからコードを拾ってください
- (2)PHPのcomposer を使って、minishlink/web-push をインストールします。
$ composer require minishlink/web-push
- (3)サイト公開鍵と秘密鍵を準備します。
- 以下のサイトを使用して、鍵を作成したのち、
- ---> https://web-push-codelab.glitch.me/
- 公開鍵は mysite.js に、秘密鍵は、PushMessage.php にそれぞれ転記してください。(コメント通り)
- (4)mysite.js と worker.js で https://example.com/ となっている行を、自分のサイトのURLに書き換えてください。
- (5)./log/ ディレクトリのパーミッションを www-data に対して書き込み許可にしてください 以上で設置は終わりです
動作チェック†
- https://自分のサイトのURL/public/ に、パソコンのChromeもしくはスマホからアクセスします。
- (iPhoneは使えません)
- 「Web通知を許可する」のリンクを踏んで、通知を許可してください。
- 一番下の「Web通知のテスト」ボタンで、10秒後に通知が届けば成功です。
サーバー側から通知を送るには・・・†
$ php PushMessage.php "送りたいメッセージテキスト"
- で送れます。(送れるはずです)
制限事項など†
- 通知先のリスト管理は、昔懐かしいPerlで書かれたBBSのような管理方法を使っています
- (./log/client.txt)
- ですので、通知先となる端末数は多くても10台以内ということでお願いします。
- セキュリティまわりのチェックをあまりやっていませんので、まさかの実運用に使われる場合は各自で対策、メンテナンスお願いします。
- Zabbixとの連携は、次の課題ということにして先送りいたします。
参考にしたサイト†
- JSとPHPでWebPushを送信するWebアプリケーションを作ってみる
https://zenn.dev/nnahito/articles/fd2c8b0ad0d19a
上記サイトを参考にさせていただきました。ありがとうございます。