最简单的推送提醒服务-Bark
在某个大楼里,安装了一个实时监控的设备。但是由于这栋大楼目前还处于全面施工的状态,因此这个监控设备,不停的被施工方掐点,断网等等,状况百出,也是令人防不胜防。。于是,一直在想,有没一个很简单的方法,看获知目前这个监控设备的状态。方法倒是有,例如利用各种云平台的推送服务,但是感觉都不像是1,2天搞完的,毕竟俺不是做后台开发的人。。于是用google不停的搜索,终于发现了一个软件,叫做Bark的软件,暂时只支持IOS和电脑端。但是客户端和服务器都全部开源,因此要移植到Android上,也不会太难。具体的介绍,请看下面的链接:
https://www.appinn.com/bark-for-iphone/
客户端代码:https://github.com/Finb/Bark
服务器端代码:https://github.com/Finb/bark-server
看上去针对非常方便。于是就先拿过来测试一下看看呗。
1. 手机端安装,直接app store上下载bark,安装后,点击注册设备,弹出自己的http链接地址,如下图所示
2.在linux上实现https的post。我原以为必须要实现https,但是在浏览器里用http测试了一下,也是可以的,于是这一下子简单了。直接用C+socket实现一把得了。
参考https://blog.csdn.net/u013377887/article/details/62429457 资料,由于该post只需要url,不需要内容,因此稍微修改了下post的内容。代码如下所示:
#include <netdb.h>
#include <sys/socket.h>void process_info(int fd)
{int send_num;char send_buf [] = "helloworld";char recv_buf [4096];char str1[4096];while (1){printf("begin send\n");memset(str1,0,4096);strcat(str1, "POST http://api.day.app/xxxxxxxxxx/今天带饭了吗? HTTP/1.1\r\n");strcat(str1,"Host: api.day.app\r\n");strcat(str1,"Content-Length: 0\r\n");strcat(str1,"\r\n\r\n");printf("str1 = %s\n",str1);send_num = send(fd, str1,strlen(str1),0);if (send_num < 0){perror("send error");return;}else{printf("send successful\n");printf("begin recv:\n");int recv_num = recv(fd,recv_buf,sizeof(recv_buf),0);if(recv_num < 0){perror("recv");return;} else {printf("recv sucess:%s\n",recv_buf);}}break;sleep(5);}
}void main(void)
{int sock_fd;struct sockaddr_in addr_serv;struct hostent* hostInfo;sock_fd=socket(AF_INET, SOCK_STREAM, 0);if (sock_fd < 0){perror("sock error");return;}else{printf("sock successful"); }hostInfo = gethostbyname("api.day.app");if(NULL == hostInfo){printf("hostInfo is null\n");return;}memset(&addr_serv, 0, sizeof(addr_serv));addr_serv.sin_family = AF_INET;addr_serv.sin_port = htons(80);printf("Ip address = %s \n",inet_ntoa(*((struct in_addr*)hostInfo->h_addr)));memcpy(&addr_serv.sin_addr, &(*hostInfo->h_addr_list[0]), hostInfo->h_length);if (connect(sock_fd, (struct sockaddr*)(&addr_serv), sizeof(addr_serv)) < 0){perror("connect error\n");return;}else{printf("connect successful\n");}process_info(sock_fd);
}
编译,下载,运行结果如下:
root@debian:~/workspace/modbus# ./main
sock successfulIp address = 35.194.255.247
connect successful
begin send
str1 = POST http://api.day.app/xxxxx/今天带é¥äº†å—? HTTP/1.1
Host: api.day.app
Content-Length: 0send successful
begin recv:
recv sucess:HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Tue, 30 Jul 2019 03:42:50 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 37
Connection: keep-alive{"code":200,"data":null,"message":""}qò¶üPè‘c¤¾
里面的乱码,应该是中文字符造成的。由于临近12点,我就推送了一个“今天带饭了吗”。。发送完毕后,只听见叮的一声,手机上已经收到了推送的信息。
到此,就差不多结束了。只不过目前还没有Android的安装包。。希望哪位大神赶快弄一个。。
针对这个监控设备,如果隔个30分钟收不到推送信息,那就证明这台监控设备出问题了。
最简单的推送提醒服务-Bark相关推荐
- Bark – 给自己的 iPhone 发推送提醒,简单开源且免费
Bark 是一款纯推送提醒服务,主要用来给自己的 iPhone 发送自定义内容的推送,可以是文字.链接,不提供历史记录功能,阅后即焚. 一.bark的应用场景 笔者最近有个需求,比如偶尔的快递箱取件码 ...
- 苹果推送消息服务(转)
苹果推送消息服务 .NET 开源项目:https://github.com/Redth/APNS-Sharp Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个 ...
- android自定义push通知_20个海外Web和App推送通知服务工具
在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...
- rtsp实时流通过rtmp推送到服务端
rtsp实时流通过rtmp推送到服务端 很多朋友都会问到rtsp如何通过rtmp协议推送到服务端,正好前段时间开发了这个功能写在这里,和大家分享下. 首先我想说的是:ffmpeg可以实现这个功能.ff ...
- 苹果推送通知服务(APNs)编程(转)详细步骤
iPhone 对于应用程序在后台运行有诸多限制(除非你越狱).因此,当用户切换到其他程序后,原先的程序无法保持运行状态.对于那些需要保持持续连接状态的应用程序(比如社区网络应用),将不能收到实时的信息 ...
- 当RPA流程自动控制机器人遇到了GitHub Actions和Wxpusher,实现自动推送一体化服务
当RPA流程自动控制机器人遇到了GitHub Actions和Wxpusher,实现自动推送一体化服务 流程分析 过程实现 第一步:python爬虫获取研招网最新动态 第二步:WxPusher实现消息 ...
- go gorilla_使用gorilla websocket构建浏览器推送通知服务的低级设计
go gorilla Singhania AdityaSinghania Aditya Follow跟随 Aug 31 8月31 gopher leaving everyone awestruck w ...
- 20个海外Web和App推送通知服务工具(一)
在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...
- 手把手教你开发安卓推送通知服务(使用阿里云 emas)
0 前言 0.1 痛点:安卓推送通知无统一标准 安卓是开源的手机操作系统,各大手机硬件厂商都会在它的基础上定制自己的操作系统. 在中国,用户因为各种原因无法使用 Google 官方服务框架,所以,在中 ...
最新文章
- 认清自己,愉快度过每一天
- PyTorch 系列教程之空间变换器网络
- setcellvalue 格式_POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
- Spring核心注释
- 提升用户体验,你不得不知道的事儿——三种提醒框的微技巧
- docker公共存储库_Docker Hub公共镜像仓库的使用
- 连接Oracle时ORA-12541 TNS 无监听程序
- 【软件工具使用】高效使用 Visio 绘图
- UCOII信号量与消息邮箱
- macOS Catalina10.15.4安装HP Laser Jet1020打印机驱动方法
- 计算机系统结构模拟试卷3,计算机系统结构全真模拟试卷.pdf
- navicat下载安装教程
- shader 重建世界坐标
- excel二维表转化为一维表
- bellman operator 和bellman equation概念区分
- 租用gpu训练神经网络(矩池云)
- Rust之包,箱和模块管理(四):用use关键字引用其他包
- KEIL,MDK,STM32
- C语言实现自动出题、单词拼写等功能,附带管理员模式
- STM32F411的HSI和HSE启动方式切换及仿真