我用HTML5写了一个游戏。在本地,它只有在我运行时才有效:
python -m SimpleHTTPServer
然后我打开localhost:8000
。所以,只有一堆.html和.js文件无效。我想把我的游戏放到网上,因为这个Github(Pages)是不可能的,因为它不起作用。
这是我需要服务器的代码的一部分(我确实localhost:8000/res/
无法在App Engine上运行,我需要更改地址):
var mapFile = new XMLHttpRequest();
var self = this;
mapFile.open("GET", "http://localhost:8000/res/map" + mapNumber.toString() + ".txt", true);
mapFile.onreadystatechange = function() {
if (mapFile.readyState === 4) {
if (mapFile.status === 200) {
self.lines = mapFile.responseText.split("\n");
self.loadTilesFromLines();
}
}
};
mapFile.send(null);
所以,我听说谷歌应用引擎可以工作,它支持Python,非常受欢迎。现在,我不需要像他们在文档中那样的东西(这是非常好的):
import webapp2
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.write('Hello, webapp2 World!')
app = webapp2.WSGIApplication([('/', MainPage)],
debug=True)
我需要的只是一个SimpleHTTPServer,它允许我在index.html
上打开my-app.appspot.com
。
我确实尝试了该示例并启动并运行,但我无法强制我的浏览器打开index.html
或src/
甚至res/
。
所以,我甚至不确定Google App Engine是否支持我在这里尝试实现的目标。文档只关注构建使用Python的应用程序,而我所需要的只是一个SimpleHTTPServer,我觉得我不需要App Engine。
答案 0 :(得分:3)
是的,你在这里想要达到的目标是非常可行的。由于您只想提供静态文件,因此非常简单,您不需要包含任何Python代码。
我们假设你有以下结构:
└── my-game
├── app.yaml
└── static
├── index.html
├── js
│ └── script.js
└── res
└── map.txt
此app.yaml
应如下所示:
application: my-app
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /
static_files: static/index.html
upload: static/index.html
- url: /
static_dir: static/
在您要安装Google App Engine SDK之后(如果您还没有这样做),您将能够从终端运行dev_appserver.py
命令。如果您具有上述结构,请尝试使用以下命令运行它:
$ dev_appserver.py /path/to/my-game
如果一切顺利,您将能够在index.html
,http://localhost:8080
map.txt
上看到http://localhost:8080/res/map.txt
,您应该能够弄明白其余部分。
请注意,您仍然可以使用python -m SimpleHTTPServer
目录中的static
运行您的应用,并在localhost:8000
上对其进行测试。