【问题标题】:Chat application: Using Django with sockjs-tornado and redis聊天应用程序:将 Django 与 sockjs-tornado 和 redis 一起使用
【发布时间】:2013-03-02 20:30:30
【问题描述】:

我正在尝试编写聊天应用程序,这里有一些设计想法:
Django 做主网站服务。
Sockjs-tornado 服务于聊天,我想在它们之间设置 redis。

当 sockjs-tornado 在聊天中接收到消息时,它会处理它并发送给其他连接的客户端并将其放入 redis 中,因此 Django 可以保存此消息在持久数据库中。我知道我应该使用 redis 的 pubsub 功能。我知道如何在 tornado(brukva 库)中设置它,但是如何在 django 中订阅 redis 的频道?所以我可以在 django 中接收消息并将其保存到数据库?你有什么想法吗?

【问题讨论】:

    标签: django websocket redis tornado sockjs


    【解决方案1】:

    我不知道 sockjs 是怎么用的,但是这个例子说明了如何在 django 模型中保存
    #在龙卷风中

    import brukva  
    import tornado.web  
    import tornado.websocket
    
    c = brukva.Client()  
    c.connect()
    
    class MessagesHandler(tornado.websoket.WebsocketHandler):
    
        def open(self):
            #....
    
        def handle_request(self, response):
            pass
    
        def on_message(self, message):
            #....
            c.publish(self.channel, json.dumps({
                "sender": self.sender_name,
                "text": message,
            }))
    
            http_client = tornado.httpclient.AsyncHTTPClient()
            request = tornado.httpclient.HTTPRequest(
                  '/to/django_project/url/chat_save_base/',
    
                    method="POST",
                    body=urllib.urlencode({
                    "message": message.encode("utf-8"),
                    "sender": self.sender.name,
                })
            http_client.fetch(request, self.handle_request)  
    

    #in django_url

    url(r'/to/django_project/url/chat_save_base/','app.my_view')
    

    #my_view

    from django.views.decorators.csrf import csrf_exempt  
    from messages.models import Message
    
    @csrf_exempt
    def my_view(request):  
        message_text = request.POST.get("message")  
        sender = User.objects.get(id=request.POST.get("sender_id"))  
    
        message = Message()
        message.text = message_text
        message.sender_id = sender_id    
        message.save()
    

    更多信息来源: http://habrahabr.ru/post/160123/

    【讨论】:

    • 你也有python 3的解决方案吗?
    猜你喜欢
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多