我对此有点困惑,并想确保我不会天真地了解它是如何工作的。客户端 JavaScript 是否也必须托管在 Google App Engine 上?假设我在我的开发服务器上创建了一个频道,然后我的计算机上有一个本地 HTML 文件(非托管)和所需的 javascript,然后我使用令牌连接到该频道 - 这行得通吗?或者这不是渠道的运作方式?
编辑:
我所拥有的只是一个 HTML 文件,与我的 app.yaml 文件(因此是我的网站的根目录)位于同一目录中。我在开发服务器中。
首先我创建一个频道并获取令牌:
token = channel.create_channel('1')
print token
>>> channel-4132644671-1352248413-1
然后我将该令牌复制到我的 HTML 文件中:
<html>
<head>
<script type="text/javascript" src="http://localhost:8080/_ah/channel/jsapi"></script>
</head>
<body >
<script>
var token = 'channel-4132644671-1352248413-1';
var channel = new goog.appengine.Channel(token);
var socket = channel.open();
socket.onopen = function() { alert('open'); };
socket.onmessage = function() { alert('message'); };
socket.onerror = function() { alert('error'); };
socket.onclose = function() { alert('close'); };
</script>
</body>
</html>
我用 Safari 打开 HTML 文件。我收到一条警告说“打开”。但是,无论我输入什么令牌var token
,我都会收到“打开”警报,因此我不确定收到该警报是否意味着什么。
然后我做:
channel.send_message('1', 'hi')
我的 HTML 文件中什么也没有发生。没有警报。我究竟做错了什么?