2012-04-24 2 views
0

나는 웹 소켓의 용감한 새로운 세상에 들어가려고 노력하고 있지만, 아무 것도 작동시키지 못합니다.소켓이 작동하지 않을 수 있습니다 - 내가 누락 된 바보가 무엇입니까?

여러 PHP 소켓 서버를 다운로드하여 사용해 보았지만 기쁨은 없습니다. 그들은 실제로 자신의 서버에서 일하는 것을 얻기 위해해야 ​​할 일에 대한 단계별 정보가 매우 부족한 것처럼 보입니다.

새 WebSocket()에 대한 첫 번째 인수로 서버 스크립트 경로를 전달하고 있습니다 (예 : 'ws : // localhost : 33/sockets/server.php'. 그게 맞습니까?

두 번째 매개 변수로 아무 것도 전달해야합니까? 나는 읽었다. 그러나 나는 아주 확신하지 않는다.

도움을 주시면 감사하겠습니다.

답변

0

WebSocket에 전달하는 경로는 파일 시스템 내의 실제 경로와 아무 관련이 없습니다.
WebSocket이 서버에 연결될 때 실제 주소 "localhost"를 사용하고 포트 33을 사용합니다. 그런 다음 핸드 쉐이킹에 대한 HTTP 요청에서 "/socket/server.php"라는 "경로"세부 정보를 사용하여 핸드 쉐이크에 넣을 것이므로 핸드 쉐이크의 첫 번째 줄은 다음과 같이 보일 것입니다 :

그래서 응용 프로그램에서이를 어떻게 처리할지 결정하는 데 사용됩니다. 이 파일을 사용하여 실제 파일과 관련되게 보이게하거나 자신 만의 방식으로 사용하려는 경우.

Here은 WebSockets URI에 대한 RFC 6455의 정보입니다.

또한 dsp 서비스로 가져올 수 있으므로 포트 33을 사용하지 마십시오. 체크 포트 맵 here.
서버 측 WebSocket을 포트 33에 바인드하면 연결이 진행됩니다.

TCP 계층 연결이 설정된 후 핸드 셰이크 인 HTTP 요청을 진행해야합니다.

그런 일이 끝나고 성공했습니다. 클라이언트 쪽 JavaScript는 onopen 콜백을 던집니다. 무언가가 잘못되면 onerror 및 onclose 이벤트가 발생합니다.

연결이 성공적으로 완료되고 WebSocket이 핸드 셰이 킹 메시징을 통해 진행 한 후에 수행 할 수 있습니다. 클라이언트는 원시 문자열을 메시지 또는 바이너리 (서버가 바이너리 데이터를 보내는 경우 특정 opcode가있는 메시지)로 수신합니다. 그러나 서버는 프레이밍과 일부 헤더로 데이터를 수신합니다. 브라우저는 자동으로 디 프레이밍을 적용하므로 클라이언트 측에서 걱정할 필요가 없습니다. 하지만 서버 측에서 직접 또는 직접 처리하거나 기존 라이브러리를 사용하여 처리해야합니다.

다음은 웹 소켓 프로토콜의 공식 문서입니다 : RFC 6455. 웹 소켓 프로토콜의 모든 측면을 이해하는 데 필요한 모든 정보가 있습니다.

한편으로는 준비된 솔루션을 살펴 보는 것이 좋습니다. 그리고 그들의 예를 살펴보십시오.

+0

감사합니다. Maksims. 내가 얻지 못하는 첫 번째 문장입니다. WebSocket ('localhost/path/to/file.php')과 같은 것을 보았습니다. 그래서 파일을 가리키는 것처럼 보입니다. 준비된 예제를 시도했지만 호스트, 경로, 포트 등 설정을 변경해야합니다. 이해할 수 없으며 설명하지 않는 것입니다. – Utkanos

+0

나는 당신이 대답의 맨 위에있는 경로를 설명하는 몇 가지 정보를 추가했습니다. 희망을 분명히 할 수 있기를 바랍니다. – moka

+0

감사합니다. Maksims. 나는 아직도 조금은 잃어버린 것 같다.1) PHP 콘솔 사용에 관한이 이야기에 대한 대부분의 블로그/자습서가 필요합니까? 2) 2 단계 [이 매우 모호한 튜토리얼] (http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/)에는 "설정에 따라 서버 변경" 그게 실제로 의미하는 것을 말하지 않고 어떤 포트를 지정해야합니까? 3) 튜토리얼의 소스 파일을 설치하려고 시도했는데 무엇을 바꿀 것인가, 무엇을 위해 무엇을해야하는지 알아낼 수 없었습니다. 죄송합니다... – Utkanos

관련 문제