Tornado认证帮助

2 投票
1 回答
797 浏览
提问于 2025-04-17 01:23

我刚开始使用tornado,并且已经把它和nginx一起设置好了,能够正常工作,php也没问题。

我想实现的是一个通知系统。

当用户做一些事情,比如发送邮件或者更新数据库中的某个字段,如果另一个用户正在浏览网页,他就会收到通知。

所以我会用jquery的ajax功能把消息和用户名发送给tornado。这个部分我已经搞定了,比如:

 $.ajax({url: "/send/notification", data: "data//Serialise from form , dataType: "text", type: "POST",

            success: function(response) {

                alert("Message From Tornado : "+response);

    }, error: function(response) {

        console.log("ERROR:", response)

        alert("Failed");

    }});

然后在Tornado中获取接收者的名字。

recipient = self.get_argument("recipient", None)

现在我想用jquery的ajax函数来长轮询tornado,等待回应。但是我完全不知道怎么让tornado检查这个通知是否是发给他的,如果是的话,就把数据发送给他。

大概是这样的:

if self.current_user == recipient:
   self.write(some data);

任何帮助都会非常感激。

1 个回答

0

事情没有那么简单。你需要保持一个等待消息的列表,以及这些消息对应的用户。可以参考这个聊天应用,它是一个不错的起点,虽然它是把每条消息都发给了所有人。

不过,修改起来也不算太难。比如,你可以添加一个dict,用来把用户和他们等待的消息对应起来。当你检查新消息的时候,就可以看看是否有消息是给那个用户的。或者,你也可以在每次检查时,快速遍历所有消息。

撰写回答