goEasy消息推送,pushlet 向特写用户实时推送
2016-07-11 10:42
555 查看
goEasy
1先去goEasy官网注册goeasy.io,并创建application,得到superKey
2引入js
<script type="text/javascript"src="https://cdn.goeasy.io/goeasy.js"></script>
3实例
<html>
<head>
<base href="<%=basePath%>">
<title>index.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript"src="https://cdn.goeasy.io/goeasy.js"></script>
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script type="text/javascript">
var goEasy = new GoEasy({appkey: 'eaf42b8e-b3bdc683b22'});
goEasy.subscribe({
channel: 'nuonuo_shop',
onMessage: function(message){
console.log(message);
alert('接收到消息:'+message.content);//拿到了信息之后,你可以做你任何想做的事
}
});
</script>
<script type="text/javascript">
function sendnews(){
$.post("push/goeasy.do");
}
</script>
</head>
<body>
<input type = "button" value="发消息" onclick="sendnews()"/>
</body>
</html>
下载goeasy-sdk.jar
@RequestMapping(value="/goeasy.do")
private void goeasy() {
GoEasy goEasy = new GoEasy("eaf42b8e-b30a-35bdc683b22");
goEasy.publish("nuonuo_shop", "我试试goeasy");
System.out.println("------goeasy-------");
}
完成。
4总结,一个application 最大连接数60,并且一个月发送+接收信息=10万条,比如推送一条信息,10个浏览器接收,算11条信息。太少。适合小应用
pushlet
1下载pushlet.jar , pushletclient.jar
2修改ajax-pushlet-client.js,在PL对象后加入userId
4配置
web.xml
<servlet>
<servlet-name>pushlet</servlet-name>
<servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>pushlet</servlet-name>
<url-pattern>/pushlet.srv</url-pattern>
</servlet-mapping>
pushlet.properties
sessionmanager.class=com.xiexy.project.test.pushlet.MySessionManager
sources.properties
source1=com.xiexy.project.test.pushlet.HelloWorldEventPullSource$HelloWorldEvent
public class HelloWorldEventPullSource implements Serializable{
private static final long serialVersionUID = 1L;
static public class HelloWorldEvent extends EventPullSource{
@Override
protected Event pullEvent() {
Event event =Event.createDataEvent("/source/event");//事件标识
// 注意:此处”/source/event”将对应页面js代码中的PjoinListen中的参数
event.setField("msg", "hello,world");//封装参数
return event;
}
@Override
protected long getSleepTime() {
return 4000; //隔4秒刷新
}
}
}
5实例
<html>
<head>
<base href="<%=basePath%>">
<title>index.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/ajax-pushlet-client.js"></script>
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
<!-- —js 从演示项目的 lib 下copy -->
<script type="text/javascript">
PL.userId='xxy';
PL._init();
PL.joinListen('/task/warn'); //事件标识 在数据源中引用
function onData(event) {
alert(event.get("msg"));
}
</script>
<script type="text/javascript">
function sendnews(){
$.post("push/event.do");
}
</script>
</head>
<body>
<input type = "button" value="发消息" onclick="sendnews()"/>
</body>
</html>
@RequestMapping(value="/event.do")
public String myMulticast() throws Exception {
/**向所有和task/warn名称匹配的事件推送**/
/* Event event = Event.createDataEvent("/task/warn");
event.setField("msg", "Xie XianYi");
Dispatcher.getInstance().multicast(event); // 向所有和task/warn名称匹配的事件推送
System.out.println("向所有和task/warn名称匹配的事件推送");*/
/**向所有的事件推送,不要求和这儿的myevent1名称匹配**/
/* Event event2 = Event.createDataEvent("/guoguo/myevent1"); // 向所有的事件推送,不要求和这儿的myevent1名称匹配
event2.setField("key1", "Broadcast msg");
Dispatcher.getInstance().broadcast(event2);
System.out.println("向所有的事件推送,不要求和这儿的myevent1名称匹配");*/
/**向ID为piero的用户推送*/
Event event3 = Event.createDataEvent("/task/warn");
//event3.setField("msg", "pppp");
event3.setField("msg", new String("中文问题".getBytes("UTF-8"),"ISO-8859-1")); //如查推送的信息为中文,前端JS不会返回信息。key不能是数字(包括数字字符串)
Dispatcher.getInstance().unicast(event3, "xxy"); // 向ID为xxy的用户推送
System.out.println("向ID为xiexianyi的用户推送");
//return event;
return "success";
}
完成。
6总结,比goeasy复杂很多。但是信息没有数量限制。可看项目大小选择。
主要为自己做备忘,同时方便有需要的人。呵呵!
1先去goEasy官网注册goeasy.io,并创建application,得到superKey
2引入js
<script type="text/javascript"src="https://cdn.goeasy.io/goeasy.js"></script>
3实例
<html>
<head>
<base href="<%=basePath%>">
<title>index.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript"src="https://cdn.goeasy.io/goeasy.js"></script>
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script type="text/javascript">
var goEasy = new GoEasy({appkey: 'eaf42b8e-b3bdc683b22'});
goEasy.subscribe({
channel: 'nuonuo_shop',
onMessage: function(message){
console.log(message);
alert('接收到消息:'+message.content);//拿到了信息之后,你可以做你任何想做的事
}
});
</script>
<script type="text/javascript">
function sendnews(){
$.post("push/goeasy.do");
}
</script>
</head>
<body>
<input type = "button" value="发消息" onclick="sendnews()"/>
</body>
</html>
下载goeasy-sdk.jar
@RequestMapping(value="/goeasy.do")
private void goeasy() {
GoEasy goEasy = new GoEasy("eaf42b8e-b30a-35bdc683b22");
goEasy.publish("nuonuo_shop", "我试试goeasy");
System.out.println("------goeasy-------");
}
完成。
4总结,一个application 最大连接数60,并且一个月发送+接收信息=10万条,比如推送一条信息,10个浏览器接收,算11条信息。太少。适合小应用
pushlet
1下载pushlet.jar , pushletclient.jar
2修改ajax-pushlet-client.js,在PL对象后加入userId
var
PL = {
4配置
web.xml
<servlet>
<servlet-name>pushlet</servlet-name>
<servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>pushlet</servlet-name>
<url-pattern>/pushlet.srv</url-pattern>
</servlet-mapping>
pushlet.properties
sessionmanager.class=com.xiexy.project.test.pushlet.MySessionManager
sources.properties
source1=com.xiexy.project.test.pushlet.HelloWorldEventPullSource$HelloWorldEvent
public class HelloWorldEventPullSource implements Serializable{
private static final long serialVersionUID = 1L;
static public class HelloWorldEvent extends EventPullSource{
@Override
protected Event pullEvent() {
Event event =Event.createDataEvent("/source/event");//事件标识
// 注意:此处”/source/event”将对应页面js代码中的PjoinListen中的参数
event.setField("msg", "hello,world");//封装参数
return event;
}
@Override
protected long getSleepTime() {
return 4000; //隔4秒刷新
}
}
}
5实例
<html>
<head>
<base href="<%=basePath%>">
<title>index.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/ajax-pushlet-client.js"></script>
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
<!-- —js 从演示项目的 lib 下copy -->
<script type="text/javascript">
PL.userId='xxy';
PL._init();
PL.joinListen('/task/warn'); //事件标识 在数据源中引用
function onData(event) {
alert(event.get("msg"));
}
</script>
<script type="text/javascript">
function sendnews(){
$.post("push/event.do");
}
</script>
</head>
<body>
<input type = "button" value="发消息" onclick="sendnews()"/>
</body>
</html>
@RequestMapping(value="/event.do")
public String myMulticast() throws Exception {
/**向所有和task/warn名称匹配的事件推送**/
/* Event event = Event.createDataEvent("/task/warn");
event.setField("msg", "Xie XianYi");
Dispatcher.getInstance().multicast(event); // 向所有和task/warn名称匹配的事件推送
System.out.println("向所有和task/warn名称匹配的事件推送");*/
/**向所有的事件推送,不要求和这儿的myevent1名称匹配**/
/* Event event2 = Event.createDataEvent("/guoguo/myevent1"); // 向所有的事件推送,不要求和这儿的myevent1名称匹配
event2.setField("key1", "Broadcast msg");
Dispatcher.getInstance().broadcast(event2);
System.out.println("向所有的事件推送,不要求和这儿的myevent1名称匹配");*/
/**向ID为piero的用户推送*/
Event event3 = Event.createDataEvent("/task/warn");
//event3.setField("msg", "pppp");
event3.setField("msg", new String("中文问题".getBytes("UTF-8"),"ISO-8859-1")); //如查推送的信息为中文,前端JS不会返回信息。key不能是数字(包括数字字符串)
Dispatcher.getInstance().unicast(event3, "xxy"); // 向ID为xxy的用户推送
System.out.println("向ID为xiexianyi的用户推送");
//return event;
return "success";
}
完成。
6总结,比goeasy复杂很多。但是信息没有数量限制。可看项目大小选择。
主要为自己做备忘,同时方便有需要的人。呵呵!
相关文章推荐
- Go中map的使用
- Golang自玩项目中一个重连机制实现.
- Django的Hello World
- google_apactest_round_A_problem_D
- 开源公司黄页之 Google 开源软件推荐
- Go语言学习笔记9
- Google浏览器中的开发工具.
- Django Multiple Database
- 【在线笔试题解题报告系列】Google APAC 2017 University Test Round A
- TYVJ 2009「Poetize8」Lagoon
- Django 模板
- Django 创建第一个项目
- TYVJ 2009「Poetize8」Lagoon
- Lightoj 1030 - Discovering Gold
- Mongoose3.3嵌入式web服务器源码剖析
- Hdu 5318 The Goddess Of The Moon (dp+矩阵快速幂)
- 解除 123 sougou 主页的几种方法
- zxing 生成二维码,可设置logo、二维码颜色、白边大小
- godaddy域名使用DNSPod做DNS解析图文教程
- RSA algorithm