玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python WEB编程 > 正文内容

Python Tornado实现web实时消息聊天的方法源码

Python入门佳作 经典教程的全新修订 10个项目引人入胜
玩蛇网推荐图文教程:python黑客多线程扫描器

Python编程语言很强大,能做出很多的工具供在不同环境下使用,今天介绍的python源码是:Python Tornado实现web实时消息聊天的方法源码

tornado在Python语言的学习过程中会或多或少的接触一些。今天就来讲Tornado 实现实时消息聊天的方法,及源码下载。在网络上能找到很多类似这样的案例,我也参考着再写一次,当做练手了。

(1)代码用中到的前端是:
twitter 的项目 bootstrap
ajax 框架是 jquery

(2)Tornado实现web实时消息聊天基本原理和思路:
服务器端使用观察者模式,发现有消息更新,会第一时间调用所有监听点的 callback 函数; 网络方面用的是 tornado 的异步长连接,一直到收到 callback 才结束连接发出响应。

Python Tornado实时消息聊天方法

下面来看下Python Tornado实现web实时消息聊天的方法源码:

#!/usr/bin/env python
#路径

# -*- coding:utf-8 -*-
#编码声明

import uuid

unique_id = lambda: str(uuid.uuid1())

class MessageServer(object):
   
    servers = {}
    
    def __init__(self, id=None):
        self.id = id or unique_id()
        self.observers = []
        self.messages = []
        self.__class__.servers[id] = self
    
    def listen(self, success_callback):
        self.observers.append(success_callback)
        return success_callback
    
    def add_message(self, message, id=None):
        id = id or unique_id()
        try:
            self.messages.append((id,message))
            [callback(id, message) for callback in self.observers]
        finally:
            self.observers = []

Python Tornado实现web实时消息聊天的方法源码,第二部分:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#www.iplaypython.com

import web
import message
import json

msgsrv = message.MessageServer()
json_encode = json.JSONEncoder().encode

class ChatMessageController(web.Controller):
    @web.asynchronous
    def get(se
1fff
lf):
        @msgsrv.listen
        def observer(id, msg):
            update_msg = json_encode({'id':id,'msg':msg})
            try:
                self.finish(update_msg)
            except IOError:
                pass
    
    def post(self):
        name = unicode(self.get_argument("username")).strip()
        content = unicode(self.get_argument("content")).strip()
        msgsrv.add_message("%s: %s" % (name,content))

玩蛇网文章,转载请注明出处和来源网址:http://www.iplaypython.com/web/w2699.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

在线python培训课程

玩蛇网PythonQQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
出炉日期:2015-12-31 15:20 玩蛇网 www.iplaypython.com

我要分享到:
上一篇:Python Web网站开发框架之TurboGears
下一篇:没有了
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules