首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主要面孔推送私人频道错误的房间/用户/

主要面孔推送私人频道错误的房间/用户/
EN

Stack Overflow用户
提问于 2015-11-02 19:52:35
回答 1查看 364关注 0票数 0

当我测试primefaces(5.2)推送示例(计数器、notify、photoshared)时,除了聊天(来自页面素数面的相同代码,复制示例页面中的代码)之外,这里有一个详细信息:

  1. 用户名:“felipe”日志在(私有消息工作)

专用信道= /pushmob/primepush/{room}/felipe

  1. 用户名:“felipe”注销
  2. 用户名:“felipe”登录(私有消息无效)

私人频道= /pushmob/primepush/{room}/felipe/felipe

另一个用户登录不能向felipe发送私有消息。

为了检测到专用信道,我在控制台PF(‘订户’).cfg.request.url中使用

知道吗?

PrimeFaces 5.2

大气2.3.4

聊天示例中的相同代码。

web.xml

代码语言:javascript
复制
<servlet>
    <servlet-name>Push Servlet</servlet-name>
    <servlet-class>org.primefaces.push.PushServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>

<servlet-mapping>
    <servlet-name>Push Servlet</servlet-name>
    <url-pattern>/primepush/*</url-pattern>
</servlet-mapping>

index.xhtml

代码语言:javascript
复制
<p:socket onMessage="handleMessageChat" channel="/{room}"
            autoConnect="false" widgetVar='subscriber' />

chatview.xhtml

代码语言:javascript
复制
public class ChatView implements Serializable {

private final static String CHANNEL = "/{room}/";

public void sendGlobal() {
    eventBus.publish(CHANNEL + "*", username + ": " + globalMessage);

    globalMessage = null;
}

public void sendPrivate() {
    eventBus.publish(CHANNEL + privateUser, "[PM "+ username + "] " + username + ": "
            + privateMessage);
    eventBus.publish(CHANNEL + username, "[PM " + privateUser + "] " + username + ": "
            + privateMessage);
    privateMessage = null;
}

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.add(username);
        requestContext.execute("PF('subscriber').connect('/" + username + "')");
        loggedIn = true;
    }
}

public void disconnect() {
    //remove user and update ui
    users.remove(username);
    RequestContext.getCurrentInstance().update("form:users");

    //push leave information
    eventBus.publish(CHANNEL + "*", username + " left the channel.");

    //reset state
    loggedIn = false;
    username = null;
}

}}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-10 13:09:47

解决了.我不得不创建两个页面,一个用于登录,另一个用于聊天,允许成功地使用私有频道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33485703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档