2011-04-21 6 views
1

asp.net에서 서버 측 클라이언트 측 jquery 이벤트를 어떻게 트리거 할 수 있습니까? 내 채팅 섹션에서 구현하고 싶습니다 ... 현재 채팅은 정상적으로 작동하는 것 같습니다 ...하지만 문제가 하나 있습니다 ... 클라이언트의 브라우저에서 채팅 기록에 5 초마다 요청을 보내야합니다. 나는서버에서 jquery 함수를 호출하십시오.

사람이 내 문제에 대한

+0

jQuery는 클라이언트 측 언어이므로 클라이언트의 브라우저에서만 실행할 수 있습니다. 그러나 서버에서 호출 할 수있는 방법은 없습니다. HTML 코드에 인라인 자바 스크립트를 넣을 수 있으며 페이지가 클라이언트 측에로드 될 때 실행됩니다. –

+0

실제로 JQuery를 기반으로 한 채팅을 수행하는 경우 폴링을 사용해야합니다. 즉, xxx 초마다 ajax 요청을 보내야하고 새 메시지가 있는지 서버에 요청해야합니다. – ITroubs

+0

hello ITroubs ... 현재 im doin입니다 ...하지만 매 x 초마다 요청을 보내는 것이 좋습니다 ... – user321963

답변

0

당신이 정기적으로 사용을 위해 정말 준비가되지 않은 HTML5 WebSocket을 같은으로받지 않고 할 수있는 최선을 다하고 있습니다 어떤 솔루션을 제공 할 수 있습니다 ... 좋은 생각이 아닌 느낌 아직.

두 가지 옵션 :

  • (보수적 인 옵션)는 폴링 서버가 될 것이라는 점을 적용하고 영향을 낮게 유지하기 위해 당신이 투표를 할 방법을 최적화 할 수 있습니다.
  • (초초 옵션) 웹 소켓을 에뮬레이트하는 새로운 라이브러리를 사용해보십시오.
+0

wcf duplex와 같은 wcf 기술을 사용할 수 없습니다. – user321963

1

기본적으로 클라이언트 브라우저에서 폴링해야합니다. 그것이 바로 아약스가 작동하는 방법입니다. 푸시 모델 인 코멧이라는 기술이 있습니다.

다음과 같이 jQuery 플러그인을 사용해 볼 수 있습니다 : http://plugins.jquery.com/project/jQuery-Comet-Push-API.

(가까운 미래에) 웹 소켓도 HTML5에서 사용할 수 있습니다. 다음은 http://channel9.msdn.com/Events/MIX/MIX11/HTM10에서 가져온 정보입니다.

WebSockets의, 신흥 명세서 는 W3C와 IETF에 의해 표준화되고있는, 원격 호스트와 양방향, 전이중 통신 채널을 열어 웹 브라우저뿐만 아니라 클라이언트 어플리케이션을 가능하게 할 것이다.

MIX11 비디오를 꼭 확인하십시오!

+1

웹 소켓 용 +1 언급하다. 또한, 우리는 아마도 Comet을 종종 "푸시 (push)"라고 부르는 동안 언급해야합니다 ... 푸시는 잘못된 명칭입니다. 혜성은 (최적화 된) long-polling 메카니즘이며, 실제로 구독 된 이벤트 중심의 "푸시 (push)"데이터가 없습니다. –

0

비록 ASP.Net에 익숙하지 않지만이 문제는 다른 방법으로 해결할 수 있습니다.

서버가 실행해야하는 함수 이름을 반환 한 다음 콜백 함수에서 호출합니까? 일종의 이런

$.post("yourpage.aspx", 
    { 
     d1: "v1" 
    }, 
    function(data) { 
    //now the data will hold the name of the function 
    window[data](); 
    } 
); 

는 이제 다른 함수에서, 위의 코드를 포장하고, 타이머를 설정, 정기적으로 응답을 확인하고, 실행할 수 있습니다 (그냥 오타에 불과하다) 조건이 일치하면 함수.

P. 스크립트가 조건이 일치하는지 확인하는 부분을 건너 뛰었습니다.

0

HTTP 세계에 오신 것을 환영합니다.

어떻게 브라우저가 작동하는지. 클라이언트가 서버에 요청을 보내면 서버가 응답합니다. 다른 방법으로는 (지금은) 다른 방향으로 갈 수 없습니다. 간단하고 그게 HTTP 프로토콜이 인기있는 이유 중 하나입니다.

하지만 이제 상황이 바뀌고 HTML5에서 웹 소켓을 지원합니다. HTML5 지원 장치 (모든 브라우저의 최신 버전 + iPhone/iPad 지원 소켓)를 개발하는 경우 웹 소켓을 사용해야합니다.

다른 측면에서, (XIII에서 언급 한 것처럼) 혜성 폴링을 사용할 수 있습니다. 기본적으로 클라이언트는 서버에 요청을 보내고 서버가 응답 할 때까지 기다립니다. 나는 ASP.NET에서 구현하는 좋은 방법이 무엇인지 잘 모르겠다. (동시 연결의 한계가 있다고 생각한다.)하지만 Nodejs에서는 꽤 유용한 기술이다.

+0

우리는 wcf duplex와 같은 wcf 기법을 사용할 수 없습니다. – user321963

+0

이중화는 보통 두 서버가 서로 협력 할 때 작동합니다. 사용자 시나리오에서는 요청에 응답 할 수없는 브라우저가 있으며 요청을하고 응답을 얻을 수만 있습니다. – neebz

관련 문제