2

本番環境では、javascript でチャネルを開くとすぐに切断されます。 すべてが devserver で問題なく動作します。コールバックはサーバーでは機能しますが、クライアントでは機能しません。フラスコ、バックボーン、requirejs、およびソースマップを使用しています。

クライアントコード:

window.channel = new goog.appengine.Channel(window.PLAY_SETTINGS.CHANNEL_TOKEN);
window.gae_websocket = window.channel.open({
  onopen: function() {
    return console.log('onopen');
  },
  onclose: function() {
    return console.log('onclose');
  },
  onerror: function() {
    return console.log('onerror');
  },
  onmessage: function() {
    return console.log('onmessage');
  }
});

サーバーコード:

class Connection(ndb.Model):
    user_key = ndb.KeyProperty()
    scope = ndb.IntegerProperty(indexed=True, choices=range(0, 2))
    target_key = ndb.KeyProperty(indexed=True)  # Event ou debate
    channel_id = ndb.StringProperty(indexed=True)

    @staticmethod
    def open_channel():
        channel_id = str(uuid4())
        channel_token = channel.create_channel(client_id=channel_id, duration_minutes=480)
        return channel_token, channel_id

appengine 本番コンソールからのログ。 appengine プロダクション コンソールのスクリーンショット

クライアント コールバック (js) が機能しません。ログを作成するサーバー コールバックは次のとおりです。

@app.route('/_ah/channel/disconnected/', methods=['POST'])
def channel_disconnection():
    client_id = request.form.get('from')
    ndb.delete_multi(Connection.query(Connection.channel_id == client_id).fetch(keys_only=True))
    logging.info("Channel closed : %s" % client_id)
    return make_response('ok', '200')


@app.route('/_ah/channel/connected/', methods=['POST'])
def channel_connection():
    client_id = request.form.get('from')
    logging.info("Channel open : %s" % client_id)
    return make_response('ok', '200')
4

0 に答える 0