我有一个现有的web项目,几乎没有依赖项,例如
我认为socketIO不能像这样加载文件:
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
问题是,我想让我的应用程序与socket.io通信,但是当我启动服务器文件(index.js)时,我可以看到我的页面,但是没有css和脚本就完全崩溃了。
我的index.js看起来是这样的:
var http = require('http');
var fs = require('fs');
var server = http.createServer(function(req, res) {
fs.readFile('./index.html', 'utf-8', function(error, content) {
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
});
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
console.log('Un client est connecté !');
socket.emit('message', 'Vous êtes bien connecté !');
});
server.listen(8080);
那么,你知道我如何告诉服务器注入我现有网站的所有资源吗?
发布于 2015-10-02 09:24:40
我认为您使用的示例代码只是提供一个简单的示例,说明要为客户端提供什么服务,而不是实际为HTML页面或其他静态内容提供服务。
使用Express,您可以这样做:
var app = require('../app');
var server = http.createServer(app);
然后在app.js中:
app.use(express.static(path.join(__dirname, 'public'))); //to render static content files to the browser from a predefined static resource directory
注意express.static
如何指向静态内容的位置。在本例中,它位于/public
文件夹中(可以是您选择的任何其他文件夹)。这就是应该放置index.html
、*.css
和您提到的所有资源的地方。
一个详细的例子可以找到这里。
最后,您在问题中粘贴的代码可以正常工作,而不必在http.createServer
中打开和服务http.createServer
文件;它不是用于静态内容的。
https://stackoverflow.com/questions/32910180
复制相似问题