如何仅在Google App Engine上提供静态文件?

时间:2013-02-04 09:19:23

标签: html5 google-app-engine

我用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.htmlsrc/甚至res/

所以,我甚至不确定Google App Engine是否支持我在这里尝试实现的目标。文档只关注构建使用Python的应用程序,而我所需要的只是一个SimpleHTTPServer,我觉得我不需要App Engine。

1 个答案:

答案 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.htmlhttp://localhost:8080 map.txt上看到http://localhost:8080/res/map.txt,您应该能够弄明白其余部分。

请注意,您仍然可以使用python -m SimpleHTTPServer目录中的static运行您的应用,并在localhost:8000上对其进行测试。