使用Express和Apache ProxyPass获取//socket.io/ 404错误

时间:2015-02-01 17:12:03

标签: node.js express socket.io

我正在尝试使用socket.io,express和node.js创建一个Web应用程序。在我的Ubuntu服务器上,我将Apache的任何url(example.com/game)请求代理到快速Web服务器(http://localhost:3000)。代理工作,因为索引页面确实加载。

但是,我无法获得客户端的socket.io连接请求。 socket.io对http://example.com/game/socket.io/?EIO=3&transport=polling&t=1422809869665-0的所有请求都返回404 Not Found错误。 (来自快速调试日志:GET //socket.io/?EIO=3&transport=polling&t=1422809724117-0 404 51.746 ms - 2213。)

令人沮丧的是,代码可以在我的Windows桌面上运行,但不是在我将其推送到我的Web服务器时。

服务器上的相关代码段:

var app = require('../app');
var debug = require('debug')('game-simulation:server');
var http = require('http');

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

app.enable('trust proxy');

var server = http.createServer(app);

server.listen(port);

var io = require('socket.io')(server, { path: '/socket.io/'});

在客户端javascript:

var url = document.location.protocol+'//'+document.location.host;
var socket = io.connect(url, {path: '/game/socket.io/'});

我的Apache代理配置:

<VirtualHost *:80>
  # ServerName, log files, directory, etc. ...

  ProxyRequests off
  ProxyPass /game http://localhost:3000/ connectiontimeout=5 timeout=30
  ProxyPassReverse /game http://localhost:3000
</VirtualHost>

关于我做错的任何想法?

0 个答案:

没有答案