私はこれについて少し混乱しており、これがどのように機能するかについて素朴ではないことを確認したいと思います. クライアント側の JavaScript も Google App Engine でホストする必要がありますか? 開発サーバーにチャネルを作成し、必要な JavaScript を含むローカル HTML ファイル (ホストされていない) がコンピューターにあり、トークンを使用してそのチャネルに接続するとします。これは機能しますか? それとも、これはチャネルの仕組みではありませんか?
編集:
app.yaml ファイルと同じディレクトリ (つまり、Web サイトのルート ディレクトリ) にある HTML ファイルだけです。私はdevserverにいます。
まず、チャネルを作成してトークンを取得します。
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>
HTML ファイルを Safari で開きます。「開いています」というアラートが表示されます。ただし、入力したトークンに関係なくvar token
、「オープン」アラートが表示されるため、そのアラートを取得しても意味があるかどうかはわかりません。
それから私は:
channel.send_message('1', 'hi')
私のHTMLファイルでは何も起こりません。アラートはありません。私は何を間違っていますか?