1

我正在管理一种从“/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');
});

这有点奇怪,不是吗?谁能弄清楚哪里错了。

非常感谢。

4

2 回答 2

0

你对这个回应的确切问题是什么?

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

于 2013-02-19T10:27:16.890 回答
0

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

实际上,您可以删除以下行app.js

app.get('/socket.io/socket.io.js', function (req, res) {
  res.sendfile(__dirname + '/socket.io/socket.io.js');
});
于 2013-02-19T17:40:09.043 回答