我正在尝试使用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>
关于我做错的任何想法?