チャンネルを開くときに問題が発生しました。私はサーバー側でこれを持っています:
def get(self):
user = users.get_current_user()
if not user:
self.redirect(users.create_login_url(self.request.uri))
return
channel_id=str(str(random.randint(0,1000)))
token = channel.create_channel(channel_id)
template_values = {
'token': token,
'me': user.user_id()
}
logger.debug("Token: %s user:%s %s %s" % (token,user.user_id(),user.nickname(),user.email()))
self.response.out.write(template.render('templates/index.html', template_values))
そしてこれはHTML(templates/index.html)にあります
<html>
<head>
<script type="text/javascript" src="/_ah/channel/jsapi"></script>
</head>
<body>
{{ token }}
<script>alert("a0");
var token = {{ token }};
alert("a1");
var channel = new goog.appengine.Channel(token);
alert("a2");
var socket = channel.open();
alert("a3");
socket.onopen = function(){
alert("open");
};
socket.onmessage = function(m){
var data = $.parseJSON(m.data);
alert(data)
};
socket.onerror = function(err){
alert("Error => "+err.description);
};
socket.onclose = function(){
alert("channel closed");
};
</script>
</body>
</html>
すべてが機能するかどうかを確認するためにアラートを設定しましたが、a0 a1 a2 が発生しましたが、a3 は発生しませんでした。問題はどこだ?channel.open() が機能しないのはなぜですか?
PS: javascript でこれらのエラーを追跡する方法はありますか? エラーがどこにあるかを推測するよりも効果的な何か。