Javascript Node.js为画布提供图像服务
我正在尝试用node.js构建一个简单的游戏,以获得更多关于网络和相关内容的知识。但现在我被卡住了。我已经花了好几个小时在网上搜索了,但我似乎找不到解决办法。我只找到了一些有用的模块,比如path.js和mime.js 我的服务器代码如下所示:Javascript Node.js为画布提供图像服务,javascript,html,node.js,canvas,path.js,Javascript,Html,Node.js,Canvas,Path.js,我正在尝试用node.js构建一个简单的游戏,以获得更多关于网络和相关内容的知识。但现在我被卡住了。我已经花了好几个小时在网上搜索了,但我似乎找不到解决办法。我只找到了一些有用的模块,比如path.js和mime.js 我的服务器代码如下所示: var http = require("http"); var host = "127.0.0.1"; var port = 3000; var url = require('url'); var fs = require("fs"); var path
var http = require("http");
var host = "127.0.0.1";
var port = 3000;
var url = require('url');
var fs = require("fs");
var path = require("path");
var mime = require('mime');
var server = http.createServer(function(request, response) {
console.log("Request received: " + request.url);
fs.readFile(__dirname + '/game.html', function(error, data) {
if (error) {
response.writeHead(404, {"Content-type":"text/plain"});
response.end("Sorry, the page was not found");
} else {
var holder = url.parse(request.url);
var ext = path.extname(holder.pathname);
response.setHeader('Content-type',"" + mime.lookup(ext));
response.writeHead(200);
response.end(data);
if (ext == ".png") {
response.setHeader('Content-type',"image/png");
response.writeHead(200);
response.end(data);
} else if (ext == ".jpeg") {
response.setHeader('Content-type',"image/jpeg");
response.writeHead(200);
response.end(data);
}
}
});
});
var io = require('socket.io').listen(server);
服务器变量似乎是导致我出现问题的原因。
我试图实现的游戏就在这里:
不必担心图形;)
使用我的服务器代码,不会提供任何图像。我尝试使用path.js和mime.js,因此每次调用都会设置特定的内容类型,但没有成功
希望你们知道,出了什么问题,可以帮助一个新手 您的服务器无法以正确的方式工作,在每次请求时,您都会读取文件“/game.html”的内容(您可以读取并缓存,仅在进行某些更改时更新),在检查请求的扩展名(但请求已被响应)之后,您会使用html文件的内容来响应每个请求(!),如果您再次写入响应(这里您应该在节点的控制台中有一些错误),则不能在可写流中写入end之后 我为您提供了两种解决方案:
/* Inside the createServer callback */
if (request.url === '/') {
// read the file and respond with html
} else {
if (/* check for the existence of the urls */) {
// get the content of the file and respond with it's content and content-type
// and don't forget to do this asynchronously!
} else {
// return 404
}
}
var simples = require('simples');
var server = simples(3000);
server.get('/', function (connection) {
connection.type('html');
connection.drain(__dirname + '/game.html');
});
server.serve(__dirname + '/static');
/*
And that's all!
To work with websockets read the documentation please
*/
您这样提供文件服务,而不仅仅是在前端用javascript构建URL并让浏览器加载您的图像,这有什么原因吗?没有理由从服务器上提供这些文件。我现在直接从浏览器中加载了它们,但仍然会遇到这样的错误:资源被解释为图像,但传输时使用MIME类型text/html:“”。