没有项目描述

solidwebpush的Python项目详细描述


此软件包允许服务器向客户端发送Web推送通知。
注意:不需要特定的Web框架(例如django、flask、pyramid,
等),因为它最初设计为在没有安装Web的Raspberry PI上运行(仅在http
请求的端口)。


主页:https://github.com/sergio burdisso/solidwebpush
作者:sergio burdisso
作者电子邮件:sergio.burdisso@gmail.com
许可证:mit
下载网址:https://github.com/sergioburdisso/solidwebpush/tarball/v1.2.3
描述:
#solid web push

此软件包允许服务器向客户端发送web push通知。
注意:*不需要**特定的web框架(例如django、flask、pyramid等),因为
它最初设计为在没有web se的树莓pi上运行服务器已安装(
仅在端口上侦听http请求的裸python脚本)。

--
1。使用pip安装solidwebpush。手动安装(建议用于覆盆子皮)

1.下载此存储库
2。复制"solidwebpush"文件夹(其中有"in it.py"的文件夹)
3。将其粘贴到项目文件夹中。注意:它必须是python脚本所在的文件夹,该脚本将"导入solidwebpush"。
4.安装所需的软件包;打开终端并写入:
````
sudo pip install ecdsa
sudo pip install python jose
sudo pip install http_ece
sudo pip install pyellic
sudo pip install py vapid
`````
**注意:**如果出现错误,特别是如果您使用的是**raspbian**,请在再次尝试之前尝试安装这些软件包(对我有效!):
````
sudo apt get install python crypto
sudo apt get install python cryptography
``````

:d

--
2。API文档

[http://pythonhosted.org/solidwebpush/](http://pythonhosted.org/solidwebpush/)

--
3。"hello world"示例

为了让我们能够从服务器向客户端设备发送"hello world"通知,我们应该设置好客户端,这就是为什么我们首先需要做的事情[这个google codelab](https://developers.google.com/web/fundamentals/getTing started/codelabs/push notifications/)在我们前进之前(注意:如果您已经熟悉web推送通知,可以跳过这一部分;否则,不用担心!你不需要花太多时间来完成它,相信我:d)假设你已经完成了[codelab](https://developers.google.com/web/fundamentals/getting started/codelabs/push notifications/),我们需要做的第一件事就是**生成**我们自己的**服务器publiC密钥**,以便我们可以在客户端设备中订阅我们的ServiceWorker(_sw.js_u)。但别担心,solidwebpush在我们创建一个pusher对象时会自动为我们执行此操作,稍后我们将使用这个对象通知我们的客户:

```python
from solidwebpush import pusher

为您键入
并将其存储在.pem文件中。注意:下次不会创建
键,而是使用存储在.pem
文件中的值。
pusher=pusher()
然后,让我们获取公钥…
print pusher.geturlb64publickey()…作为urlsafe-base64编码字符串/>
复制此字符串并将其粘贴到"main.js**"文件:
```javascript
//main.js(第24行)
const applicationserverpublickey='<;your public key>;';
``````


我们的客户端在注册并订阅其ServiceWorker(_sw.js廑)后,向我们发送了以下订阅对象:

````文本
{"终结点":"https://fcm.googleapis.com/fcm/send/coz80twue2i:apa91bfwfwijzd3b7yhcbkzpsd廑kffe5a_xoo0gzdhgx1jybwty6utnvycx0z2fd4i对一个工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的工作组的>我们想送他一个"你好的世界"通知,这可以很容易地完成如下操作:

```python
from solidwebpush import pusher

推送器发送通知n(订阅,"hello world")

````
酷,嗯?


**注意:**这些和更多[示例](https://github.com/sergioburdisso/solidwebpush/tree/master/examples)可以在"示例"文件夹中找到。




--
4。很高兴知道……

在"现实世界"中,订阅对象将通过http请求(可能使用ajax)发送到我们的服务器,它们将与用户会话id一起存储,以便以后当我们需要通知客户机时,我们通过他的会话id(而不是他的订阅对象)。幸运的是,solidwebpush也为我们这样做,如下例所示:

```python
假设消息是通过http post发送的,并且会话令牌(会话id)作为cookie存储在客户端设备中。
elif post["action"]="subscribe":
推送者.新闻订阅(
cookie["会话id"],
post["订阅"]

elif post["action"]="unsubscribe":
推送者.移除订阅(
Cookie["会话ID"]



sg={
"title":"notification title",
"body":"hello world"
}
通知用户x
pusher.notify(用户x_会话id,msg)




`````
第一次调用"pusher"的"newsubscription"时,将自动生成一个sqlite数据库文件(默认为"subscriptors.db"),为我们存储所有这些订阅。稍后,当我们使用类似"notifyall"(或"notify")的方法时,solidwebpush将使用存储在其中的信息来推送通知。

最后,我强烈建议您阅读[文档](http://pythonhosted.org/solidwebpush/)以获得对包的"更深入"理解。例如,"new subscription"和"notifyall"可以接收一个[可选]参数来指定组ID。如下所示:

``python

.它的非阻塞版本。在这种情况下,每次需要程序阻止时都可以调用"wait"方法,直到发送完所有消息。例如:

```` python
订阅数=[…]

pusher.sendnotificationtoall(订阅,"hello world",nonblocking=true)
让我们继续为用户做有用的事情


需要非阻塞版本吗?当使用阻塞模式(默认设置)时,服务器的"主循环"每次发送通知时都会阻塞,在某些情况下,如果它对整个系统响应时间有负面影响,则会阻塞。
关键字:web推送通知、通知、web通知、推送、web push、覆盆子pi
平台:未知
classifier:topic::internet::www/http
分类器:编程语言::python::实现::pypypy
分类器:编程语言::python
分类器:编程语言::python::2
分类器:编程语言::python::3

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Maven无法识别安装在Ubuntu外壳上的$java_HOME jdk   java如何防止可运行程序在其中一个抛出异常时执行   java Listview在按下项时不触发   如何在WindowsPhone8中使用JavaRESTWebService?   java在spring引导下使用多个dispatcher servlet/web上下文   java为什么在删除容器的绝对大小时不绘制GEF子项?   java在hibernate实体中保留DB约束是好的   JavaSpring选择最高优先级bean   ArrayList<Class>java字符串[]   有向加权边图的Java邻接表实现   字母数字字符串的java Tesseract配置:混合2、Z、6和G   如果输入为空,则带有EditText的java警报对话框将关闭   jsp上的java Struts 2动作响应   java获取IndexOutOfBundException Android   scala AWSJAVASDK:解压缩大小必须小于262144000字节