我管理一种客户端请求从'/ 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');
});
有点奇怪,不是吗?任何人都可以找出错误的地方。
非常感谢。
答案 0 :(得分:0)
该回复的确切问题是什么?
304
状态代码表示Not modified
,这意味着您的浏览器可以使用/js/socket.io/socket.io.js
的缓存版本,而不是服务器必须再次将其发送到浏览器(因此,节省带宽) )。
答案 1 :(得分: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');
});