javascript - Google App Engine channel API (Python/Django) 问题

标签 javascript django google-app-engine push channel

嘿,大家好。我正在尝试使用 App Engine Channel API(记录为 here )为我的应用程序启用推送更新。但是,我在设置初始化通信 channel 的机制时遇到了一些问题。

问题是,当我加载有问题的页面时,我得到了 onError 和 onClose 处理程序的调试打印,但没有得到 onOpen 处理程序的调试打印。没有其他事情发生。以下是使用 Google Chrome 开发者工具的 JavaScript 控制台输出:

Resource interpreted as script but transferred with MIME type text/html. ..... jsapi:-1

onError ..... 443088:88

onClose ..... 443088:80

这里是我的 Django 模板中(大部分)JavaScript 代码的相关部分:

<script type="text/javascript">
onOpen = function() {
   console.debug('onOpen');

   var xhrArgs = {
      url: '/channel/connect/',
      headers: { 'Content-Type': 'application/json' },
      postData: dojo.toJson({ 'channel_token': '{{ channel_token }}' }),
      handleAs: 'text',
      load: function(response) {
         alert('success');
      },
      error: function(error) {
         alert('failure: ' + error);
      }
   };
   var deferred = dojo.xhrPost(xhrArgs);
 };
 
 onClose = function() {
  console.debug('onClose');
 };
 
 onMessage = function(msg) {
  console.debug('onMessage');
 };
 
 onError = function() {
  console.debug('onError');
 };

 openChannel = function() {
  var channel = new goog.appengine.Channel('{{  channel_token }}');
  var handler = {
   'onopen': onOpen,
   'onclose': onClose,
   'onmessage': onMessage,
   'onerror': onError
  };
  var socket = channel.open(handler);
  socket.onopen = onOpen;
  socket.onmessage = onMessage;
 };
 
 setTimeout(openChannel, 100);
 </script>

如果我理解正确,那么服务器端代码此时不相关,因为 onOpen 似乎还没有被调用。我知道我一定错过了一些简单的东西,但如果有人可以帮忙解决这个问题,我将不胜感激!

最佳答案

在我看来,您正在使用统一的 channel token 。服务器需要调用channel.create_channel来检索该客户端的 token ,然后将其传递给Channel对象的构造函数。

关于javascript - Google App Engine channel API (Python/Django) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600647/

相关文章:

python - 在 Google App Engine 中查找相对路径的好方法是什么?

google-app-engine - 可恢复上传中止异常 : 403 Insufficient Permission

javascript - Cordova 键盘更改布局

google-app-engine - 是否可以在谷歌应用引擎中启动计时器?

javascript - 按名称定义 ng-model

django - 如何扩展 Django Admin 模型 readonly_fields 而不必指定所有模型字段(但仍然可以看到它们)

python - 在 Django 中格式化日期时如何使用本地化的 "short format"?

django - 通过几个条件销毁APIView

javascript - 使用 json 调用 ArcGIS 服务的 AJAX 无法正常工作

javascript - PHP、ajax、xml、jQuery - 动态搜索仅返回一个值