NodeJ将客户端的url请求响应给另一个

时间:2013-02-19 10:18:18

标签: node.js socket.io

我管理一种客户端请求从'/ js /'开始,这意味着服务器端的根文件夹或者可能位于'/ public / js /'中以供进一步使用。 好的,问题是我收到了这条消息:

//server side
GET /js/socket.io/socket.io.js 304 7ms  

// client side 
Uncaught ReferenceError: require is not defined     
Uncaught ReferenceError: io is not defined 

[x]来源

// index.html
<script src="/js/socket.io/socket.io.js"></script>

// app.js   
app.get('/js/*', function (req, res) {
    res.sendfile(__dirname + req.url.substr('/js'.length));
});

但是当我改为固定路径时它确实有效。

[o]来源

// index.html
<script src="/socket.io/socket.io.js"></script>

// app.js   
app.get('/socket.io/socket.io.js', function (req, res) {
    res.sendfile(__dirname + '/socket.io/socket.io.js');
});

有点奇怪,不是吗?任何人都可以找出错误的地方。

非常感谢。

2 个答案:

答案 0 :(得分:0)

该回复的确切问题是什么?

304状态代码表示Not modified,这意味着您的浏览器可以使用/js/socket.io/socket.io.js的缓存版本,而不是服务器必须再次将其发送到浏览器(因此,节省带宽) )。

答案 1 :(得分:0)

当您在应用程序中需要socket.io时,它会设置一个处理程序来拦截/socket.io/socket.io.jssource)的请求。这就是第二个例子有效的原因。

事实上,您可以在app.js中删除这些行:

app.get('/socket.io/socket.io.js', function (req, res) {
  res.sendfile(__dirname + '/socket.io/socket.io.js');
});