一个简单的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服务器只能处理以某种特定方式构造的客户端消息,不能用于客户端到客户端的通信。
========
“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服务器只能处理以某种特定方式构造的客户端消息,不能用于客户端到客户端的通信。