Only tested on the lastest versions of Chrome, Android Chrome and Firefox, so it might have problems in other browsers. Please report on twitter @AndreBaltazar if you find any problem.
Right now there is a limit of 5 registered workers per endpoint to avoid spam. There is also a limit of 2 notification per minute on each endpoint. Notifications sent when rate limited will be discarded, not queued. This project was created to notify me of internal errors with my website. Please don't abuse this system or I will shut it down. Also, I might send you a notification thanking you for using this project, or an update regarding it's state. Hope you enjoy, thanks.
It's quite inefficient at the moment, it registers a service worker for each endpoint. In the future a single service worker will be used for all events.
If there is any interest, I might do private endpoints that require a key to notify and without limits.
Try using cURL
curl -X POST https://notifier.icy.pt/OA_pX7EYzdWavRv9GJniSAkE1GrJ6Q4jSxY_xl1Ir9Q
Try using cURL with message
curl -d "title=Hello+from+notifier.icy.pt&body=Example+notification" -X POST https://notifier.icy.pt/OA_pX7EYzdWavRv9GJniSAkE1GrJ6Q4jSxY_xl1Ir9Q
Try using cURL with custom title, message, logo, and url (when clicked) using JSON
curl -d '{"title":"icy.pt","body":"Visit my website and explore other projects!","url":"https://icy.pt/","icon":"https://icy.pt/icy-logo.png"}' -H "Content-Type: application/json" -X POST https://notifier.icy.pt/OA_pX7EYzdWavRv9GJniSAkE1GrJ6Q4jSxY_xl1Ir9Q
Try with PHP
<?php
file_get_contents('https://notifier.icy.pt/OA_pX7EYzdWavRv9GJniSAkE1GrJ6Q4jSxY_xl1Ir9Q', false, stream_context_create(['http' => ['method' => 'POST']]));
Try with PHP with custom title, message, logo, and url (when clicked) using JSON
<?php
file_get_contents('https://notifier.icy.pt/OA_pX7EYzdWavRv9GJniSAkE1GrJ6Q4jSxY_xl1Ir9Q', false, stream_context_create(['http' => ['method' => 'POST', 'header' => 'Content-type: application/json', 'content' => '{"title":"icy.pt","body":"Visit my website and explore other projects!","url":"https://icy.pt/","icon":"https://icy.pt/icy-logo.png"}']]));
Try with JS with everything using JSON
fetch('https://notifier.icy.pt/OA_pX7EYzdWavRv9GJniSAkE1GrJ6Q4jSxY_xl1Ir9Q', {
method: 'POST',
body: JSON.stringify({
'title': 'Notifier @ icy',
'body': 'Thanks for trying the notifications!',
'icon': '/images/notifier-logo.png',
'url': 'https://notifier.icy.pt/',
'badge': '/images/notifier-logo-96-bw.png',
'image': '/images/notifier-thanks.png',
'vibrate': [200, 100, 200, 100, 200, 100, 400],
'requireInteraction': true,
'actions': {
'website': {
'title': 'Visit my website',
'icon': 'https://icy.pt/icy-logo-96-bw.png',
'url': 'https://icy.pt/'
},
'twitter': {
'title': 'Follow me on Twitter @AndreBaltazar',
'icon': '/images/twitter-bw.png',
'url': 'https://twitter.com/AndreBaltazar'
}
}
}),
headers: new Headers({
'Content-Type': 'application/json'
})
});