只有一个连接不丢失消息

时间:2012-11-23 15:01:12

标签: javascript python google-app-engine sendmessage channel

我有一个带有基本控制器,基本html和基本javascript文件的应用程序。在这三个中创建一个具有唯一客户端ID(create_channel)的令牌,然后将令牌传递给模板并在javascript文件中创建连接。

然后我向此连接发送消息。如果我保持在同一页面它运行良好,我看到了消息,但如果我转到其他页面,base.js再次加载并启动新连接,所以我从来没有看到我从服务器发送的消息。

知道如何解决此问题?我只想创建一个连接,但基本文件加载次数超过......

1 个答案:

答案 0 :(得分:0)

每个“用户”必须拥有一个ID。我使用会话ID。然后,只有在它尚不存在的情况下才会创建令牌。

channel_token = self.session.get('channel_token')
    if channel_token is None: # if the session user does not have a channel token
        user_id = str(uuid.uuid4()).replace("-",'')
        channel_token = channel.create_channel(user_id)
        self.session['channel_token'] = channel_token
        self.session['user_id'] = user_id

因此,当您转到其他页面时,如果已有可用于该user_Id的新频道,则不会创建新频道。当用户导航离开时,您每次都会断开连接。您可以使用user_id发送消息,无论他们在哪个页面上。