最近在网上找了些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** Tornado 是一个Python编写的高性能网络库,它支持Web服务器、WebSocket协议,并且能够处理大量的并发连接。WebSocket是一种在客户端和服务器之间建立长连接的协议,可以实现双向通信,...
WebSocket是Web交互技术的一种,它允许在客户端和服务器之间建立持久的、低延迟的双向连接。这个技术在2011年被W3C标准化,为实时应用如在线游戏、股票交易、聊天室等提供了高效的数据传输方式。WebSocket API设计得...
1. **Tornado WebSocket**: Tornado是Python的一个异步网络库,它内置了对WebSocket的支持。在`app.py`中,我们可能会看到类似以下的代码来创建WebSocket服务器: ```python import tornado.websocket import ...
基于Tornado和WebSocket的HTML5围棋游戏ChainForPerlsWeb设计源码涉及的知识点非常广泛,首先,它结合了前端和后端技术,前端主要利用HTML5、CSS和JavaScript,而后端则使用了Python语言和Tornado框架。此外,它还...
user@example:~$ sudo pip install tornado user@example:~$ python ./app.py 在浏览器中打开client/index.html 配置 有关详细信息,请参阅客户端中的server/config.py和变量 gameOptions 笔记 尚未完成,有待办...
Tornado是一个Python编写的支持异步网络库,它可以用来构建高性能的Web应用和服务。Tornado拥有丰富的HTTP客户端和服务端的接口,可以处理各种规模的并发需求。在处理高并发网络请求时,常见的方法有使用多进程或多...
Python中的WebSocket和Socket是两种在网络通信中常用的协议,它们在实时数据传输,特别是构建实时交互应用(如在线聊天、股票行情、游戏等)时扮演着重要角色。在本主题中,我们将深入探讨“python-websocket-socket...
Tornado是使用python编写的一个强大的、可扩展的web服务器。它在处理严峻的网络流量时表现的足够强健,但却在创建和编写时有着足够的轻量级,并且能够被用在大量的应用和工具中。 不同于那些最多只能达到10000个...
在那里,数据被分发到 Tornado Websocket 服务器,进入不同的通道。 这些通道由 URI 分隔,以便将客户端连接到 Tornado Websocket 服务器可以连接到不同的通道。遥感器应用程序远程传感器应用程序通过 websocket ...
该项目利用了Tornado的这些特性来构建一个SSH-WebSocket代理程序,该程序能够将SSH(Secure Shell)协议通信转换为WebSocket协议,从而实现更加灵活和高效的网络通信。 SSH是一种网络协议,用于在不安全的网络中...
在本项目中,我们将探讨如何利用Python的Django框架、ZeroMQ消息中间件以及Tornado Web服务器来构建一个基于消息机制的WebSocket应用。以下是关于这个主题的详细知识点: 1. Django框架: Django是Python的一款流行...
3. **服务器端实现**:在服务器端,可以通过多种编程语言实现WebSocket服务,如Node.js的ws库,Java的Jetty或Tomcat,Python的Tornado等。这些库提供了处理WebSocket连接和消息的接口。 4. **心跳机制**:由于...
通过继承`tornado.websocket.WebSocketHandler`,你可以创建自己的WebSocket处理器,从而实现实时数据传输,如在线聊天、股票更新等场景。 ### 4. HTTP客户端 Tornado提供了`tornado.httpclient`模块,用于发起...
Tornado聊天框架是一个基于Tornado Web服务器和WebSocket协议构建的高效、可扩展的实时通信框架。Tornado是一个Python Web框架,以其异步非阻塞I/O模型而闻名,特别适合处理高并发的网络应用,如聊天系统。在聊天...
4. WebSocket:Tornado也支持WebSocket,可以用于实现双向通信。创建WebSocket处理器类似创建HTTP处理器,但需继承自`tornado.websocket.WebSocketHandler`: ```python class WebSocketHandler(tornado....
Tornado Websocket是Tornado框架的一部分,提供了一种简单的方式来处理WebSocket请求。要使用Tornado Websocket,首先确保你的Python环境已经安装了Tornado。通过以下命令可以安装: ``` pip install tornado ``` ...
5. **WebSockets**: Tornado 对 WebSockets 的支持非常出色,提供了一套完整的接口来处理 WebSocket 连接,适合构建实时通信应用。 6. **AsyncHTTPClient**: 异步 HTTP 客户端,用于发起 HTTP 请求,同样基于非阻塞...
3. **Websocket支持**:Tornado支持Websocket协议,使得服务器能够与客户端建立长连接,实现实时通信。 4. **模板引擎**:Tornado自带了一个简单的模板语言,用于生成HTML响应。 5. **轻量级**:Tornado的设计哲学...
服务器端通常使用诸如Node.js、Java的WebSocket库(如Jetty或Tomcat)或者Python的Tornado框架等来处理WebSocket连接。在这个WebSocketDemo中,服务器端的代码会包含处理连接、断开连接、接收和发送数据的逻辑。 在...
4. WebSocket模块:Qt也支持WebSocket,通过QWebSocket类可以实现与Tornado服务器的WebSocket连接。 5. 事件驱动:Qt采用信号和槽机制,当用户操作触发特定事件时,如点击发送按钮,相应的槽函数会被调用,执行发送...