2011-12-29 2 views
2

많은 웹 사이트에서 구현되어 odesk 등을 말할 수 있습니다. 내가 생각하고있는 것은 사용자에게 메시지를 수신했음을 알리는 메시지 전송 체계를 구현하는 것입니다. 예를Yii를위한 메시지 시스템 구현

에 대한

당신은 나에게 메시지를 보내와 나는 녹색에서 메시지를 빨간색 아이콘이 표시됩니다. 분명히 우리는 발신자 ID 리시버 ID를 저장하는 데이터베이스 테이블이 필요하지만, 사용자가 새로 고침 버튼을 누르지 않아도되는 방식으로 구현하는 방법은 분명합니다.

저는 C# 배경에서 웹을 처음 사용하기 때문에 여러 가지 방법을 모릅니다.

저는 Yii에서 개발 중입니다. 몇 가지 제안이 좋을 것입니다

답변

3

간단한 periodic refresh 자바 스크립트 메서드를 사용하여이 작업을 수행 할 수 있습니다. 메시지 표시등이 뷰에서이 같은

뭔가 :

<?php Yii::app()->clientScript->registerScript('autoupdate-div-inbox-update', 
      "setInterval(function(){ 
       // do an ajax call to server to check for new messages 
       // using jquery's ajax method 
       $.ajax({ 
        url: 'http://example.com/index.php?r=controller/action',// this is the url that will check for new messages for the current user 
        success: function(data) {// data is the data returned from the server 
         if(data){ 
          // update your new message div 
          // you can show your red icon here 
         } 
        } 
       }); 
       return false; 
      },1000);" 
    ); 
?> 

그래서 일어나고있는 것은 setInterval을 방법은 기능마다 1000 밀리 초와 Ajax를 사용하여 새 메시지 기능 검사를 실행하는 것입니다.

당신이 YII에서 아약스를 모르는 경우

는 다음 컨트롤러 액션에 대해 다음 사항을 확인하십시오
public function actionMessages(){ 
    // check for new messages in the db 
    $xyz = checkMessage(); 
    // assuming checkMessage returns the number of new messages if any or false if none 
    // whatever we echo will be available to the javascript we wrote in the data variable 
    echo $xyz; 
} 

timing methods in javascript에 대해 자세히 알아보십시오.

이 패턴은 또한 폴링라고

, 내가 잘 알고 아니에요 롱 폴링서버 푸시 같은 다른 인기있는 방법도있다,하지만 당신은 너무 패턴을 결정하기 전에 그들을 밖으로 검사한다 .

호프가 도움이 되었으면 설명이 있는지 물어보십시오.

+2

감사합니다. url은 간단히 : url : 'controller/action'일 수 있습니다. 포트 82를 아파치에 사용하기 때문에 새로운 서버 설정에 맞게 수동으로 수정하는 것은 불편할 수 있습니다. – Silentbang

+0

끝내주는, 나도 무언가를 배웠다. –

+0

오, 잊어 버렸습니다. "컨트롤러/액션"은 뷰에서이를 구현하려는 경우에만 적합합니다. 우리는 url처럼 문자열을 concanate해야합니다 : \ "". CController :: createUrl ('컨트롤러/액션'). "\", – Silentbang