【发布时间】:2012-08-28 04:52:04
【问题描述】:
我有两个用户:用户和管理员。当用户添加新记录时,如果管理员已登录,我想在管理员屏幕中显示咆哮消息。
有可能吗?如果是这样,我怎样才能做到这一点? JMS 是一种可能的解决方案吗?
【问题讨论】:
-
用户之间的通信可以使用push primefaces.org/showcase-labs/push/index.jsf
标签: jsf-2 primefaces
我有两个用户:用户和管理员。当用户添加新记录时,如果管理员已登录,我想在管理员屏幕中显示咆哮消息。
有可能吗?如果是这样,我怎样才能做到这一点? JMS 是一种可能的解决方案吗?
【问题讨论】:
标签: jsf-2 primefaces
您可以将私聊组件修改到您的案例中
http://www.primefaces.org/showcase-labs/push/chat.jsf
曾经,任何人都登录到您的系统。您将用户注册到系统。
public void login() {
RequestContext requestContext = RequestContext.getCurrentInstance();
if(users.contains(username)) {
loggedIn = false;
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Username taken", "Try with another username."));
requestContext.update("growl");
}
else {
users.addUser(username);
pushContext.push(CHANNEL, username + " joined the channel.");
requestContext.execute("subscriber.connect('/" + username + "')");
loggedIn = true;
}
}
您可以通过发送推送通知向单个客户端发送消息。
public void sendPrivate() {
pushContext.push(CHANNEL + privateUser, "[PM] " + username + ": " + privateMessage);
privateMessage = null;
}
然后处理即将到来的消息
<p:socket onMessage="handleMessage" channel="/chat" autoConnect="false" widgetVar="subscriber"/>
<script type="text/javascript">
function handleMessage(data) {
var chatContent = $(PrimeFaces.escapeClientId('form:public'));
chatContent.append(data + '<br />');
//keep scroll
chatContent.scrollTop(chatContent.height());
}
</script>
【讨论】: