2010-06-22 5 views
3

Web Sockets과 관련된 몇 가지 질문이 있습니다.웹 소켓 관련 질문

최신 Firefox 4.0 nightlies는 웹 소켓을 지원합니다. Webkit도 마찬가지입니다 (Chrome 4 + Safari 4/5). Internet Explorer 9은 안정 버전 이전의 Microsoft에 따라 웹 소켓 기능을 갖추고 있습니다.

어쨌든, 내 질문은 : 나는 웹 사이트를 관리하기 위해 자바 스크립트 관리 인터페이스을 건물입니다

  • . XMLHttpRequest 대신 클라이언트 - 서버 통신을 위해 Web Sockets을 사용해야합니까? 이 아닌은 브라우저 호환성에 신경을 쓸 필요가 있습니까?

  • 웹 소켓을 사용하면 XMLHttpRequest를 사용하는 일반적인 상황에 비해 저장, 삭제 및 업데이트 호출이 빨라 집니까? 요청이 더 일까요?

  • HTML5의 navigator.onlinewindow.addEventListener('offline', ...)을 알고 있지만 연결이 끊어진 웹 소켓을 사용하면 연결 문제를보다 정확하고 빠르게 감지 할 수 있습니까? 내 인터넷 연결을 끄거나 방화벽으로 차단하면 Firefox는 여전히 navigator.online이 이라는 것을 나타냅니다. Web Sockets을 사용하면 서버 연결이 즉시 사라져서 연결 문제를보다 정확하게 감지 할 수 있습니다.

  • 나는 (모든 아파치 모듈을 설치하거나 다른 사용자 정의를 수행 할 필요) 코드가 다른 웹 서버와 휴대용 즉, 순수 PHP로 웹 소켓 서버 측을 지원하는, 그래서 수 있습니다. 나는 사람들에게 여러 종류의 모듈을 HTTPD에 설치할 것을 요구하지 않고 몇 군데에 소프트웨어를 배포하고 싶다.

가능한 한 많은 질문에 답변 해 주시기 바랍니다. 나는 정말로 대답에 흥미가있다.

답변

5

웹 사이트를 관리하기위한 JavaScript 관리 인터페이스를 구축 중입니다. 브라우저 호환성에 신경 쓸 필요가 없다고 말하면 XMLHttpRequest 대신 클라이언트 소켓 통신을 사용해야합니까?

웹 소켓을 사용하고자하는 것처럼 보입니다. WebSocket을 사용하는 주된 이유는 서버에서 클라이언트로 데이터를 푸시하고자 할 때입니다. 응용 프로그램에이 기능이 필요하지 않으면 WebSocket을 사용하지 않아야합니다.

웹 소켓을 사용하면 XMLHttpRequest의 일반적인 상황에 비해 저장, 삭제 및 업데이트 호출이 빨라 집니까? 요청이 더 즉각적일까요?

헤더가 없어서 (클라이언트 및 서버) 양측에 시간을 절약 할 수 있습니다. 그러나 이득은 아마 아주 작을 것이다.

웹 소켓이 있으면 (연결이 끊길 때) 연결 문제를보다 정확하고 빠르게 감지 할 수 있습니까?

예, 이벤트는 WebSocket이 닫힐 때 즉시 실행됩니다. 대안은 긴 폴링 또는주기적인 XHR입니다. 또는 이벤트 클라이언트 측 저장 영역.

나는 코드가 당신이 this을 읽어 제안 다른 웹 서버

처음으로 휴대용 즉, 웹 소켓을 순수 PHP와 서버 측을 지원하는, 그래서 수 있습니다. WebSocket은 동기식으로 잘 작동하지 않습니다. PHP와 아파치는 비동기 방식으로 잘 작동하지 않습니다. therearesomeimplementations이지만 그 중 많은 부분이 구형입니다. 개인적으로이 언어에 ruby, python, java 또는 server-side javascript과 같은 다른 언어를 사용합니다. 단순히 언어가 비동기 모델을 더 잘 지원하고 WebSocket 구현이 더 복잡하기 때문입니다.

WebSocket 프로토콜은 현재 초안이며 변경 될 수 있습니다. 마치 a few weeks ago처럼. 그래서 코드가 잘 깨지게됩니다.

나의 조언은 : 단지 그것을 위해서 WebSocket을 사용하지 마십시오. 실시간 이벤트 기반 응용 프로그램을 사용하는 경우 올바른 선택 일 수 있습니다. WebSocket이 무엇인지, 이벤트 중심 응용 프로그램과 관련하여 서버 측에서 수행해야 할 작업을 이해해야합니다. 생산을 위해 사용하지 마십시오. 너무 연약합니다.

+1

참고 : PHP로 작성된 괜찮은 WebSocket 서버가 있습니다. http://socketo.me/ – igorw