使用tornado实现本地聊天室
来源:互联网 发布:小学语文网络研修微课 编辑:程序博客网 时间:2024/06/10 03:27
使用tornado实现简单地本地聊天室
1.开发环境
2.tornado源码下载以及编译安装
3.聊天室全部源码
4.使用说明
1.开发环境
(1)本例程是在ubuntu12.04上面实现的
(2)python解析器是2.7版本:
在有网络的情况下可以:sudo apt-get install python
在没有网络的情况下可以从这个链接下载:
python解析器下载地址
注意请下载2.7版本的;然后解压,进入解压好的目录依次执行:
./configure –prefix=${pwd}
make
sudo make install
大功告成
2.tornado源码下载以及编译安装
(1)tornado源码的下载:
git clone git://github.com/facebook/tornado.git
(2)编译安装tornado
进入源码下载目录tornado:cd tornado
编译:sudo python setup.py build
安装:sudo python setup.py install
注意执行sudo python setup.py install的时候需要联网
3.聊天室全部源码
建立一个目录mytalk:mkdir mytalk
进入该目录:cd mytalk
建立我们的服务器python源文件:touch main.py
建立存放html的目录:mkdir myhtml
进入myhtml:cd myhtml
建立我们的html文件:touch index.html
回到mytalk,下面是我使用tree命令查看我们生成的结构:
/mytalk# tree.├── main.py└── myhtml └── index.html
我们的源码文件总共两个一个python脚本main.py,一个html文件index.html。下面是我们的源码:
#filename:main.py#This is the server sourceimport tornado.webimport tornado.ioloopclass Index(tornado.web.RequestHandler): def get(self): self.render('myhtml/index.html')import tornado.websocketimport jsonclass SocketHandler(tornado.websocket.WebSocketHandler): clients=set()class SocketHandler(tornado.websocket.WebSocketHandler): clients=set() @staticmethod def send_to_all(message): for c in SocketHandler.clients: c.write_message(json.dumps(message)) def open(self): self.write_message(json.dumps({ 'type':'sys','message':'Welcome to webSocket', })) SocketHandler.send_to_all({ 'type':'sys', 'message':str(id(self))+'has joined', }) SocketHandler.clients.add(self) def on_close(self): SocketHandler.clients.remove(self) SocketHandler.send_to_all({ 'type':'sys', 'message':str(id(self))+'has left', }) def on_message(self,message): SocketHandler.send_to_all({ 'type':'user', 'id':id(self), 'message':message })if __name__=="__main__": app=tornado.web.Application([ ('/',Index), ('/soc',SocketHandler), ]) app.listen(8000) tornado.ioloop.IOLoop.instance().start()
上面使我们的server源码我们看到他用到了我们的:
def get(self):
self.render(‘myhtml/index.html’)
这个就是我们的html文件源码如下:index.html
<html><head><script>var ws = new WebSocket('ws://localhost:8000/soc');ws.onmessage=function(event){ var table = document.getElementById('message'); var data =eval('('+ event.data+')'); ({ 'sys':function(){ var cell =table.insertRow().incertCell(); cell.innerHTML =data['message']; }, 'user':function(){ var row=table.insertRow(); row.insertCell().innerHTML=data['message']; row.insertCell().innerHTML=data['id']; }, }[data['type']])();};</script><script>function send(){ ws.send(document.getElementById('chat').value); document.getElementById('chat').value='';}</script></head></body><input id='chat'><button onclick='send()'>Send</button><table id='message' border='1'></table>
4.使用说明
进入我们的源码目录执行main.py:suso python main.py
此时我们的聊天服务器就启动了
打开浏览器输入:http://localhost:8000/
注:多打开几个浏览器页面,这就是我们的浏览器客户端会看到如下图片:
- 使用tornado实现本地聊天室
- Tornado实现聊天室功能(websocket)
- wokerman 在线聊天室本地实现
- 使用Tornado实现http代理
- linux利用管道来实现本地聊天室
- wokerman 上在线聊天室本地实现
- J2ME:使用UDP实现聊天室
- 使用Network实现简易聊天室
- 使用tornado实现定时执行任务
- tornado使用celery实现异步处理
- Tornado使用
- 4.1本地聊天室fifo简单实现2015/7/27
- tornado websocket 学习demo:简单聊天室
- J2ME:使用socket实现聊天室客户端
- J2ME:使用socket实现聊天室服务端
- 使用python和redis实现实时聊天室
- 实现使用Websocket通讯的聊天室
- 使用Android网络编程实现简易聊天室
- 【每日一剂】---带边框按钮
- 吃透微信营销系统班
- 非root权限下启动nginx失败
- Qt容器遍历
- Win2008服务器或VPS安全配置基础教程
- 使用tornado实现本地聊天室
- ios uitableview static cells显示不了
- iOS View的旋转
- kernel 3.10内核源码分析--hung task机制
- 网络营销系统班_5大模块60小时课程_菜鸟到大神一步到位
- Android API 中文 (2) —— 暂停和恢复一个Activity
- 读取已经存在的excel文件并将其导出
- 我的Java之路
- 目录