一个简单的django插件,用于从django服务器向sockjs客户端发送推送通知

pushnote的Python项目详细描述


便签
========

“pushnote”是一个简单的django插件,用于从
django服务器到sockjs客户端。它在内部使用“zeromq”和
“Sockjs龙卷风”。pushnote可以向所有sockj发送推送通知
客户端和此客户端的子集。

要求:
----

1.` Pyzmq`>;=2.0
2.` Sockjs龙卷风`>;=0.0.5
3.` django`>;=1.4

安装:
----

使用您喜爱的python包管理器安装“pushnote”:



PIP安装注意事项

将“pushnote”添加到“settings.py”中的“installed\u apps”``



已安装的应用程序=(
“django.contrib.auth”,
“便签”,



在“settings.py”中定义“pushnote”mq“socket”``



pushnote_mq_socket='TCP://127.0.0.1:8002'

用法:
-----

运行Pushnote转发器设备



注释mq--sub=tcp://127.0.0.1:8002--pub=tcp://127.0.0.1:8001

运行Sockjs Tornado服务器



pushnote服务器——端口=8080——mq_socket=tcp://127.0.0.1:8001——路由=/sockjs——地址=''


或者,如果不需要多个tornado实例支持,则可以完全忽略pushnote mq,并应将-s/--single参数传递给pushnote服务器



pushnote服务器——单端口=8080——mq_socket=tcp://127.0.0.1:8002——路由=/sockjs——地址=''

将sockjs客户端库附加到页面



<;头>;
<;script src=“http://cdn.sockjs.org/sockjs-0.3.min.js”>;


在浏览器中打开页面并连接到Sockjs Tornado服务器



conn=new sockjs('http://localhost:8080/sockjs')

为传入消息定义回调



conn.onMessage=函数(e){console.log(e.data);};

从django发送消息



来自pushnote.pub import notify\u all
通知所有人({'msg':u'hi all!'})

您将在js控制台中看到它



对象{消息:“大家好!”}

高级通知:
-

您可以向用户子集发送通知。



来自pushnote.pub导入通知
来自pushnote.utils import tokenize
从django.contrib.auth.models导入用户
user=user.objects.get(电子邮件='pushnote@mail.com')
通知({'msg':你好,%s!'%user.username},users=[用户])
令牌=令牌化(用户)
通知({'msg':带标记%s的u'hi用户!'%令牌},用户=[用户])

要获取此消息,您需要通过令牌订阅



var token={%pushnote\u token%};
sockjs.prototype.emit=函数(名称,数据){//sockjs.send的包装器,以获得pushnote的协议支持
变量meta_dict={
名称:名称,
数据:数据
};
this.send(json.stringify(meta_dict))发送
};
conn=new sockjs('http://localhost:8080/sockjs')
conn.emit('subscribe',{'token':token});
conn.onMessage=函数(e){console.log(e.data);};

`{%pushnote\u token%}`不过是一个包装
``pushnote.utils.tokenize``返回用签名的user.id
Standart Django演唱机制。您可以通过设置
“settings.py”中的“pushnote”salt。如果你需要更多的安全措施,
您可以提供自己的标记化功能。它应该接受django用户
对象和返回令牌。在settings.py中添加此函数的路径。



pushnote_tokenizer='pushnote.utils.tokenize'

结论:
----

1.pushnote用i序列化datetime对象所以8601格式。你可以用“moment.js”在客户端解析它。
2.pushnote服务器只能处理以某种特定方式构造的客户端消息,不能用于客户端到客户端的通信。

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

推荐PyPI第三方库


热门话题
JavaI从另一个Jframe类B扩展了一个J帧类a,但在显示帧B时,它也在B中播放帧a   java适配器模式应用程序   使用并行流从java列表中获取Pojo,而不使用任何类型的索引   java更新文本文件中的双精度   java从webservice返回自定义对象   java在查找多个集合的交集时使用Retainal()的最快顺序   java如何在安卓社交媒体应用程序中应用用户对用户支付?   c代码能引发java异常吗?   Java数组填充了最后一个插槽中的内容   java JOOQ从大表中获取数据:良好实践   使用ApachePOI在JavaSwing中嵌入excel工作表   java如何使用枚举定义常量值组   java JavaFX将文本追加到TextArea引发异常   javascript JS在firefox中无法正常工作   java如何在同一片段中的片段打开后编辑该片段打开的活动中的值   对夏洛克的命令。py的解释不同于linux命令行和java进程api   php在Java中动态创建全局多维数组   html Java XML Transformer将“\n”替换为空格   Javac编译编码问题