2012-09-14 56 views
3

我在Node.js中沒有太多的經驗,而不是在socket.io中,因此我可能會問一些愚蠢的問題,並首先爲此感到抱歉。帶apache的Socket.io

我嘗試做以下操作:在Ubuntu在那裏我有阿帕奇也安裝

  1. 安裝的節點。
  2. 在apache中創建虛擬主機並將其設置爲代理節點。我的conf文件看起來像:

    <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. 已經創建了一個簡單的服務器js文件(第一個服務器實例socket.io網站),並從CLI命令啓動服務器:節點server.js。 它開始完美,聽8080

  4. 創建另一個虛擬主機,我把clientside index.html(也來自socket.io第一個例子)。起初我有問題(實際上主要問題是這樣),瀏覽器無法解析路徑/socket.io/socket.io.js。然後,我從終端的本地lynx前往url(http:// localhost:8080/socket.io/socket.io.js),下載了這個js,並在index.html附近放置了虛擬主機。在此之後,瀏覽器可以解決這一要求,但我有當socket.io.js本身就是試圖獲得URL錯誤:

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

你有任何想法我怎麼能解決這個問題? 我的主要目標是讓我可以訪問我的節點服務器並使用socket.io與之通信,例如創建非常簡單的聊天。

我希望我很清楚。 謝謝大家誰會試圖幫助。

+0

可能與http://serverfault.com/questions/290121/configuring-apache2-to-proxy-websocket –

+0

複製不認爲它重複...... 我的問題是關於具體問題:解決從apache socket.io.js文件requhest – Jibla

回答

0

http://localhost:8080顯然不會在服務器以外的任何地方使用。

客戶端javascript的io.connect()應該連接到http://node.aidemo.info,以便Apache可以將它發送給節點。如果你已經打開了端口8080

5

我使用快遞+ socket.io和它們監聽端口3001

http://node.aidemo.info:8080也可能會奏效。我希望http://example.com/folder能夠重定向到我的Express應用程序在端口3001上偵聽(即,到http://localhost:3001,服務器端)。

我已經完成了以下工作。

.html文件有這樣的:

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

而且我的Apache2的conf看起來是這樣的:

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> 

注意,它需要的模塊proxy_http啓用。要啓用它,運行這個命令:

sudo a2enmod proxy_http; service apache2 restart 
+0

我得到握手失敗與HTTP代碼502與此方法,任何線索? – Vicary

1

如果你把socket.io.js文件在本地附近的index.html文件,它不會解決問題,因爲你可能沒有在main.js文件更改URL在socket變種,看在:

var socket = io.connect(); 
main.js/index.html(腳本)

替換:

var socket = io.connect(httpprotocol+hostname+httpport); 

我的源代碼是這樣的:

var socket = io.connect('https://192.168.43.187:8443/'); 
相關問題