2011-04-22 2 views
1

Gtalk 및 Facebook에 연결할 수있는 채팅 클라이언트를 개발 중입니다. 목적으로 DWR을 사용하고 있습니다.DWR을 사용하여 사용자 목록을 업데이트하는 방법

일단 로그인하면 사용자의 목록을 채워야합니다. 클라이언트 측에서 나는

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이 할 수있다 (온라인) 명단 목록을 얻을 헤로인 API를 사용하고 서버 측에

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 
      }); 

이 컬렉션을 처리 ???

답변

0

서버 메서드 usersOnline()을 수정하여 Collection<RosterEntry> 개체를 반환하면 DWR이 해당 개체를 function(users) 인 콜백 함수 인수에 채 웁니다. 따라서 호출이 콜백 함수 function(users)으로 반환 된 후에는 users 개체를 통해 서버 측 방법으로 업데이트를 가져올 수 있습니다. users 개체는 array과 같이 통과해야합니다. 적용 할 경우 을 반환해야하므로 과 같이 통과해야합니다.

이게 당신이 찾고 있는게 있니? 이것에 대한 자세한 내용은 here을 참조하십시오.

+0

오, 서블릿에 데이터를 반환하기 위해 JSON을 사용할 필요가 없습니다 ... 클라이언트 측에서 컬렉션을 반환하고 트랜 슬버스해야합니다 ... K ll을 사용해보고 알려주세요 .. 고마워요 :) – enthusiastic

+0

정확하게 . Java 스크립트 디버거에 액세스 할 수 있으면 콜백 함수에 중단 점을 설정하고 반환 된 객체를 체크 아웃 할 수 있습니다. 서버 측에서 – CoolBeans

+0

@CoolBeans ....... 나는 사용자 공개 목록을 usersOnline() { \t \t 명단 명단 = connection.getRoster()을 가지고 목록 항목을 반환하고; \t \t 목록 항목 = (목록 ) roster.getEntries(); \t \t 반환 항목; \t} 클라이언트에서 위와 같은 코드가 있습니다 ... 오류 : 정의되지 않음, 오류 서버 사이드 스크립트 세션 ID가 초과되었습니다. 새 세션이 자동으로 생성되었습니다 .... 어디서 잘못됩니까? – enthusiastic

관련 문제