4

Node.js や socket.io の経験があまりないので、ばかげた質問をするかもしれませんが、まず最初に申し訳ありません。

私は次のことをしようとしています:

  1. Apacheもインストールされているubuntuにノードをインストールしました。
  2. Apacheで仮想ホストを作成し、ノードへのプロキシとして設定しました。私のconfファイルは次のようになります:

    <VirtualHost *:80>
        ServerAdmin giorgi@omedia.ge
        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 Web サイトの最初のサーバーの例)、コマンド node server.js を使用して cli からサーバーを起動しました。それは完全に起動し、8080 をリッスンします

  4. クライアント側のindex.htmlを配置する別の仮想ホストを作成しました(これもsocket.ioの最初の例から)。最初は問題がありました (そして実際に主な問題はこれです)、ブラウザーはパス /socket.io/socket.io.js を解決できませんでした。次に、ターミナルから lynx の URL (http://localhost:8080/socket.io/socket.io.js) にアクセスし、その js をダウンロードして、index.html の近くに virtualhost を使用してローカルに配置しました。この後、ブラウザはそのリクエストを解決できますが、socket.io.js 自体が URL を取得しようとするとエラーが発生します。

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

どうすればこの問題を解決できますか?私の主な目標は、ノードサーバーにアクセスしてsocket.ioと通信できるWeb URLを取得することです-たとえば、非常に単純なチャットを作成します。

私がはっきりしていたことを願っています。助けようとするすべての人に感謝します。

4

3 に答える 3

5

Express + socket.io を使用しており、 port でリッスンしています3001。そして、ポートでリッスンしている Express アプリ(つまり、サーバー側http://example.com/folder)にリダイレクトしたいと考えています。3001http://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
于 2013-04-02T18:36:07.807 に答える
1

socket.io.jsファイルをファイルの近くにローカルに配置した場合、おそらくファイル内のvarindex.htmlの URL を変更していないため、問題は解決しません。次を参照してください。socketmain.js

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/');
于 2016-10-15T09:02:10.037 に答える
0

http://localhost:8080明らかに、サーバーの外部では利用できません。

apache がそれを Node.js に送信できるように、クライアント側の JavaScriptio.connect()が接続されている必要があります。http://node.aidemo.info

http://node.aidemo.info:8080ポート 8080 を開いている場合にも機能する可能性があります。

于 2012-10-25T20:55:23.453 に答える