2012-09-14 2 views
3

나는 socket.io가 아닌 Node.js에 많은 경험이 없기 때문에 어리석은 질문을 던지고 유감스럽게 생각합니다.아파치가있는 Socket.io

나는 다음을 수행하려고 : 나는 또한 설치 아파치를 우분투에

  1. 설치된 노드.
  2. apache에 가상 호스트를 생성하고이를 노드의 프록시로 설정하십시오.

    <VirtualHost *:80> 
        ServerAdmin [email protected] 
        ServerName node.aidemo.info 
        ServerAlias www.node.aidemo.info 
    
        ProxyRequests off 
        <Proxy *> 
         Order deny,allow 
         Allow from all 
        </Proxy> 
    
        <Location /> 
         ProxyPass http://127.0.0.1:8080 
         ProxyPassReverse http://127.0.0.1:8080 
        </Location> 
    
    </VirtualHost> 
    
  3. 이 (socket.io 웹 사이트에서 첫 번째 서버 예) 서버에 대한 간단한 JS 파일을 생성 명령 CLI에서 서버를 시작했습니다 : 노드 server.js처럼 내 conf의 파일이 보인다. 완벽하게 시작하여 8080을 청취합니다.

  4. 클라이언트 측 index.html을 작성한 또 다른 가상 호스트를 작성했습니다 (socket.io의 첫 번째 예도 있음). 처음에는 문제가 있었지만 (실제로는 주된 문제는 이것입니다), 브라우저는 /socket.io/socket.io.js 경로를 해석 할 수 없었습니다. 그런 다음 터미널에서 로컬로 lynx의 URL (http : // localhost : 8080/socket.io/socket.io.js)로 이동하여 js를 다운로드하고 index.html 근처에 가상 호스트로 로컬로 두었습니다. 이 후, 브라우저는 요청을 해결할 수 있지만, 나는 자체가 URL을 얻기 위해 노력하고있다 socket.io.js 오류가 있습니다

    http://localhost:8080/socket.io/1/?t=1347623348836 
    

가 어떻게이 문제를 해결할 수 있습니다 당신이 어떤 생각을 가지고 있습니까를? 내 주요 목표는 내 노드 서버에 액세스 할 수있는 웹 URL을 가지고 socket.io와 대화하는 것입니다. 예를 들어 매우 간단한 채팅을 생성하는 것입니다.

나는 분명히했으면 좋겠다. 도와 주신 모든 분들께 감사드립니다.

+0

아마 http://serverfault.com/questions/290121/configuring-apache2-to-proxy-websocket –

+0

와 중복은에게 중복을 것 같아요 ... 제 질문은 구체적인 문제에 대한 것입니다 : 아파치에서 socket.io.js 파일로 큐를 다시 해석하는 것 – Jibla

답변

0

http://localhost:8080은 서버 외부에서는 사용할 수 없습니다.

클라이언트 측 자바 스크립트의 io.connect()http://node.aidemo.info에 연결되어야 apache가이를 노드로 보낼 수 있습니다. 당신은 포트 8080

5

나는 특급 +의 socket.io를 사용하고 그들이 포트 3001에 청취를 개방 한 경우

http://node.aidemo.info:8080도 작동 할 수 있습니다. 그리고 http://example.com/folder을 포트 3001 (즉, http://localhost:3001, 서버 쪽)으로 수신 대기하는 내 Express 앱으로 리디렉션하려고합니다.

나는 다음을 수행했다.

<script src='/folder/socket.io/socket.io.js'> </script> 
<script> 
var socket = io.connect('http://example.com', {resource: 'folder/socket.io'}); 
... 
</script> 

을 그리고 내 아파치 conf 파일은 다음과 같습니다 :

.html 파일이있다가 사용할 수있는 모듈 proxy_http이 필요

ProxyPreserveHost On 
ProxyPass /folder/ http://localhost:3001/ 
ProxyPassReverse /folder/ http://localhost:3001/ 

<Proxy *> 
    Order deny,allow 
    Allow from all 
</Proxy> 

<Location /folder/> 
    allow from all 
</Location> 

하는 것으로.그것을 사용하려면,이 명령을 실행 : 당신은 아마 main.js 파일에 socket VAR의 URL을 변경하지 않았기 때문에

당신이 당신의 index.html 파일 근처에 로컬 socket.io.js 파일을 넣으면
sudo a2enmod proxy_http; service apache2 restart 
+0

나는이 방법, 어떤 단서로 HTTP 코드 502와 악수를하고 있습니까? – Vicary

1

, 그것은 문제가 해결되지 않습니다를 봐 에서 :

당신의 main.js/index.html (스크립트)에서
var socket = io.connect(); 

교체와 :

이 같은

내 코드 소스의 모양을

var socket = io.connect('https://192.168.43.187:8443/');