最近在网上找了些websocket的资料看了下,node和tornado等等本身已经实现了websocket的封装,所以使用起来会比较简单,php如果想要写websocket还需要自己跑一整套流程,比较麻烦。
根据网上的资料写了一个简单的websocket的demo,果真炫酷掉渣天,我是用tornado,网上多是实现实时聊天室的例子,想要实现点对点的聊天功能还需要在send函数那里加条件,目测是根据浏览器用户的id去判断的。代码如下:
服务端代码:
#!/usr/bin/python
#coding:utf-8
import os.path
import tornado.httpserver
import tornado.web
import tornado.ioloop
import tornado.options
import tornado.httpclient
import tornado.websocket
import json
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class SocketHandler(tornado.websocket.WebSocketHandler):
"""docstring for SocketHandler"""
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,
})
##MAIN
if __name__ == '__main__':
app = tornado.web.Application(
handlers=[
(r"/", IndexHandler),
(r"/chat", SocketHandler)
],
debug = True,
template_path = os.path.join(os.path.dirname(__file__), "templates"),
static_path = os.path.join(os.path.dirname(__file__), "static")
)
app.listen(8000)
tornado.ioloop.IOLoop.instance().start()
客户端代码:
<html>
<head>
<script type="text/javascript">
var ws = new WebSocket("ws://localhost:8000/chat");
ws.onmessage = function(event) {
console.log(event);
}
function send() {
ws.send(document.getElementById('chat').value );
}
</script>
</head>
<body>
<div>
hello
<input id="chat">
<button onclick="send()">send</button>
</div>
</body>
</html>
分享到:
相关推荐
自己手搓的tornado的 websocket实例demo,我就是为了水几个下载币,如果你没有下载币的话,就联系我814,382,690,@扣扣邮箱
Tomcat7 Ext4. WebSocket 聊天室,经过优化的,具有详细注释的,学习WebSocket的经典例子。
Tornado websocket 群聊 单聊 框架 这是一个基本框架
user@example:~$ sudo pip install tornado user@example:~$ python ./app.py 在浏览器中打开client/index.html 配置 有关详细信息,请参阅客户端中的server/config.py和变量 gameOptions 笔记 尚未完成,有待办...
主要介绍了Tornado实现多进程/多线程的HTTP服务详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
Tornado是使用python编写的一个强大的、可扩展的web服务器。它在处理严峻的网络流量时表现的足够强健,但却在创建和编写时有着足够的轻量级,并且能够被用在大量的应用和工具中。 不同于那些最多只能达到10000个...
在那里,数据被分发到 Tornado Websocket 服务器,进入不同的通道。 这些通道由 URI 分隔,以便将客户端连接到 Tornado Websocket 服务器可以连接到不同的通道。遥感器应用程序远程传感器应用程序通过 websocket ...
消息推送:1.浏览器前台 到 socket 2.生产消息端 到 socket 再从socket 推送到前台 3.代码整理之后,可以和webpy框架合用 4.实现前台无刷新,后台多线程监听消息发送
使用django+zeromq+tornado实现基于消息机制的websocket,有相关的帖子对内容进行介绍。东西经笔者试验可用。
用Python基于tornado实现的websocket服务器的一个小李子,希望帮到有用的人
网络一个使用 tornado 和 websocket 的简单游戏发布工具框架快照 ##Step 0 初始化 {node}/server_list/s1 {"update_time":x,"server_name":x,"server_id":x}...{node}/server_list/sN {"update_time":x,"server_name...
本例子中,我们使用python的tornado框架来实现(tornado提供了tornado.websocket模块)。当然读者也可以使用socket.io,专为webSocket设计的js语言的服务端,用起来非常简单,它也对不支持webSocket的浏览器提供了...
SockJS龙卷风服务器SockJS-tornado是在框架上运行的的Python服务器端对应项。 简化后的Echo SockJS服务器看起来或多或少像: 从龙卷风导入Web,从sockjs.ionio导入ioloop从SockJSRouter,SockJSConnection ...
Tornado 在 OpenShift 上运行,支持 Websocket 和 Django。 这个 git 存储库是一个示例应用程序,可帮助您开始在 Red Hat 的 OpenShift PaaS 上使用 Tornado 和 Django 和 Websocket 支持。 Python 包 本应用使用...
SampleWebsocket 所需软件包:Tornado Websocket使用这些软件包进行安装。 pip install tornado安装Python 2.7.9+
Red Hat 的 OpenShift PaaS 上的 Tornado(带有 Websockets) Tornado 在 OpenShift 上运行,支持 Websocket。 此 git 存储库是一个示例应用程序,可帮助您开始在 Red Hat 的 OpenShift PaaS 上使用 Tornado。在 ...
SockJS 是一个浏览器上运行的 JavaScript 库,如果浏览器不支持 WebSocket,该库可以模拟对 WebSocket 的支持,实现浏览器和 Web 服务器之间低延迟、全双工、跨域的通讯通道。 SockJS family: SockJS-client ...
应用将Tornado用于websocket,将RethinkDB用于消息,并将Django用户(使用MySQL)用于身份验证。 设置 git clone ... virtualenv venv pip install python manage.py migrate 跑步 export PYTHONPATH=.;export ...
1.利用tornado提供的websocket功能与浏览器建立长连接,读取实时日志并输出到浏览器 2.写一个实时读取日志的脚本,利用saltstack远程执行,并把实时日志发往redis中。 3.tornado读取redis中的信息,发往浏览器。 此...
此文件是凯哥Python基础第四章的讲义文件目录如下 1、走通Tornado基础流程 2、请求与响应 3、模板和数据库以及接口的调用顺序 4、应用安全 5、同步与异步+使用WebSocket实现在线聊天