如何使用 DWR 更新用户列表

发布于 2024-11-02 18:40:31 字数 1170 浏览 3 评论 0原文

我正在开发可以连接到 Gtalk 和 Facebook 的聊天客户端。我正在使用 DWR 来实现此目的。

登录后,我必须填充用户列表。在客户端我有

function showUsersOnline() {
    var cellFuncs = [ function(user) {

        return '<i>'+user+'</i>';
    } ];
    LoginG.usersOnline( {
        callback : function(users) {
            dwr.util.removeAllRows('usersOnline');
            dwr.util.addRows("usersOnline", users, cellFuncs, {
                escapeHtml : false
            });

在服务器端我使用 Smack Api 来获取名册列表(在线)

public void usersOnline() {
    Roster roster = connection.getRoster();
    Collection<RosterEntry> entries = roster.getEntries();
    System.out.println(roster.getEntryCount());
    int count1 = 0;
    int count2 = 0;
    for (RosterEntry r : entries) {
        String user = r.getUser();
        Presence presence = roster.getPresence(user);
        if (presence.getType() == Presence.Type.available) {
            System.out.println(user + " is online");
            count1++;

        } else {
            System.out.println(user + " is offline");
            count2++;
        }

现在我应该将数据作为 JSON 返回还是有一种方法 DWR 可以处理集合???

I am developing chat client which can connect to Gtalk and Facebook.I am using DWR for the purpose.

Once I log into I have to populate the user s lists. On client side I have

function showUsersOnline() {
    var cellFuncs = [ function(user) {

        return '<i>'+user+'</i>';
    } ];
    LoginG.usersOnline( {
        callback : function(users) {
            dwr.util.removeAllRows('usersOnline');
            dwr.util.addRows("usersOnline", users, cellFuncs, {
                escapeHtml : false
            });

On server side I am using Smack Api to get the roster list(online)

public void usersOnline() {
    Roster roster = connection.getRoster();
    Collection<RosterEntry> entries = roster.getEntries();
    System.out.println(roster.getEntryCount());
    int count1 = 0;
    int count2 = 0;
    for (RosterEntry r : entries) {
        String user = r.getUser();
        Presence presence = roster.getPresence(user);
        if (presence.getType() == Presence.Type.available) {
            System.out.println(user + " is online");
            count1++;

        } else {
            System.out.println(user + " is offline");
            count2++;
        }

Now should I return the data as JSON or is there a way DWR can handle the collection???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

公布 2024-11-09 18:40:31

如果您修改服务器方法 usersOnline() 以返回 Collection 对象,则 DWR 会将其填充到回调函数的参数中,在您的情况下为 功能(用户)。因此,在调用返回到回调函数 function(users) 后,您可以通过 users 对象来获取服务器端方法对其进行的更新。 users 对象需要像 array 一样进行遍历,因为您要返回一个 CollectionList 无论适用什么。

这是您要找的吗?有关此内容的更多信息,请参阅此处

If you modify your server method usersOnline() to return the Collection<RosterEntry> object then DWR will populate that in the argument of the callback function which in your case is function(users). So after the call is returned back to the callback function function(users) you can go through the users object to get the updates made to it by the server side method. The users object will need to be traversed like an array since you are returning a Collection or a List whatever applies.

Is this what you are looking for? More on this can be read here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文