我花了很多时间思考如何使用primefaces push实现通知,我没有找到实现的逻辑,任何人都可以帮助我,我在我的gradueted项目中做这项工作。
我的协作应用程序是一个共享编辑器,为此我将ckeditor与togetherJS集成,这个应用程序可以帮助来自不同文化的用户。
现在我需要做关于语言的通知,例如,当用户连接时,他选择语言(arabe,或法语或英语),当两个用户显示相同语言时,系统通知第三个用户其他人使用的语言。
我的问题,我没有找到如何识别用户并确定选择与其他语言不同的语言的用户,以及如何使用primefaces push向该用户发送通知。
答案 0 :(得分:1)
Primefaces推送非常容易.. 让我试着清除它..
您需要将其放入web.xml
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
<async-supported>true</async-supported>
</servlet>
然后你只需要在primefaces页面示例(试试计数器) http://www.primefaces.org/showcase/push/counter.xhtml
您需要订阅频道
<script type="text/javascript">
function handleMessage(data) {
alert(data);
}
</script>
第二件事就是创建bean
@ManagedBean
@ApplicationScoped
public class GlobalCounterView implements Serializable{
private volatile int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public void increment() {
count++;
EventBus eventBus = EventBusFactory.getDefault().eventBus();
eventBus.publish("/counter", String.valueOf(count));
}
}
创建资源监听器
@PushEndpoint( “/计数器”) 公共类CounterResource {
@OnMessage(encoders = {JSONEncoder.class})
public String onMessage(String count) {
return count;
}
}
这应该够了..
将在页面中的每一个..将被吸引到频道..当有人举起计数器时,发送到频道的每条消息都会被通知
一旦这将起作用,你只需要为不同的用户使用语言通道。当用户选择语言时,你将订阅不同的频道(如反对,es等..)
因此,一旦用户使用某种语言登录,就会向订阅该语言频道的所有用户发送一条消息
Simpe ..希望有所帮助
编辑: http://kahimyang.info/kauswagan/code-blogs/1298/using-primefaces-primepush-with-tomcat-7
此链接也可以帮助您..