Socket.io与apache

Jib*_*bla 3 apache reverse-proxy node.js socket.io

我在Node.js中没有很多经验,也没有在socket.io中,所以也许我会问一些愚蠢的问题并且对此抱歉.

我想做以下事情:

  1. 在ubuntu上安装了我也安装了apache的节点.
  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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为服务器创建了简单的js文件(socket.io网站中的第一个服务器示例),并使用命令: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
    
    Run Code Online (Sandbox Code Playgroud)

您有什么想法我该如何解决这个问题?我的主要目标是拥有web url,我可以从中访问我的节点服务器并使用socket.io与它通信 - 例如创建非常简单的聊天.

我希望我很清楚.谢谢所有想要帮助的人.

Win*_*mes 5

我正在使用express + socket.io,他们正在侦听端口3001.我想http://example.com/folder重定向到我的快递应用程序监听端口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>  
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

请注意,它需要proxy_http启用模块.要启用它,请运行以下命令:

sudo a2enmod proxy_http; service apache2 restart
Run Code Online (Sandbox Code Playgroud)