`
haoningabc
  • 浏览: 1469900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tornado的websocket

阅读更多
http://haoningabc.iteye.com/blog/2154526
参考
http://www.tuicool.com/articles/niuqiiA
http://www.docin.com/p-278084273.html
http://www.tuicool.com/articles/QniyIz
客户端:
index.html

<html>
<head>
<script type="text/javascript">
var ws = new WebSocket("ws://182.254.155.153:8000/chat");
ws.onmessage = function(event) {
  console.log(event);
}
ws.onopen = function() {
        console.log('open');
};
ws.onclose = function() {
    console.log('Closed! ');
}
function send() {
  ws.send(document.getElementById('chat').value );
}
</script>
</head>

<body>
  <div>
    hello
    <input id="chat">
    <button  onclick="send()">send</button>
  </div>    
</body>
</html>



服务端:

#!/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()


apt-get install python-virtualenv
分享到:
评论

相关推荐

    手搓的tornado websocket

    **手搓的tornado websocket** Tornado 是一个Python编写的高性能网络库,它支持Web服务器、WebSocket协议,并且能够处理大量的并发连接。WebSocket是一种在客户端和服务器之间建立长连接的协议,可以实现双向通信,...

    websocket聊天室,学习websocket的好例子。

    WebSocket是Web交互技术的一种,它允许在客户端和服务器之间建立持久的、低延迟的双向连接。这个技术在2011年被W3C标准化,为实时应用如在线游戏、股票交易、聊天室等提供了高效的数据传输方式。WebSocket API设计得...

    Python的websocket服务器框架

    1. **Tornado WebSocket**: Tornado是Python的一个异步网络库,它内置了对WebSocket的支持。在`app.py`中,我们可能会看到类似以下的代码来创建WebSocket服务器: ```python import tornado.websocket import ...

    Tornado实现多进程/多线程的HTTP服务详解

    Tornado是一个Python编写的支持异步网络库,它可以用来构建高性能的Web应用和服务。Tornado拥有丰富的HTTP客户端和服务端的接口,可以处理各种规模的并发需求。在处理高并发网络请求时,常见的方法有使用多进程或多...

    canvas-ping-pong-multiplayer:带有 Tornado websocket 多人服务器的画布乒乓球游戏

    user@example:~$ sudo pip install tornado user@example:~$ python ./app.py 在浏览器中打开client/index.html 配置 有关详细信息,请参阅客户端中的server/config.py和变量 gameOptions 笔记 尚未完成,有待办...

    基于Tornado和WebSocket的HTML5围棋游戏ChainForPerlsWeb设计源码

    本项目是一款基于Tornado框架和WebSocket技术的HTML5围棋游戏ChainForPerlsWeb设计源码,集成了17个JavaScript脚本、10个Python程序、5个CSS样式表、3个HTML页面、2个日志文件、1个Git忽略文件、1个授权许可文件、1...

    python-websocket-socket 消息推送

    Python中的WebSocket和Socket是两种在网络通信中常用的协议,它们在实时数据传输,特别是构建实时交互应用(如在线聊天、股票行情、游戏等)时扮演着重要角色。在本主题中,我们将深入探讨“python-websocket-socket...

    lucky带你玩转高并发Tornado框架

    Tornado是使用python编写的一个强大的、可扩展的web服务器。它在处理严峻的网络流量时表现的足够强健,但却在创建和编写时有着足够的轻量级,并且能够被用在大量的应用和工具中。 不同于那些最多只能达到10000个...

    sensor-lab-project:带入侵检测的环境监控

    在那里,数据被分发到 Tornado Websocket 服务器,进入不同的通道。 这些通道由 URI 分隔,以便将客户端连接到 Tornado Websocket 服务器可以连接到不同的通道。遥感器应用程序远程传感器应用程序通过 websocket ...

    使用django+zeromq+tornado实现基于消息机制的websocket

    在本项目中,我们将探讨如何利用Python的Django框架、ZeroMQ消息中间件以及Tornado Web服务器来构建一个基于消息机制的WebSocket应用。以下是关于这个主题的详细知识点: 1. Django框架: Django是Python的一款流行...

    WebSocket消息实时提醒

    3. **服务器端实现**:在服务器端,可以通过多种编程语言实现WebSocket服务,如Node.js的ws库,Java的Jetty或Tomcat,Python的Tornado等。这些库提供了处理WebSocket连接和消息的接口。 4. **心跳机制**:由于...

    Tornado使用指南(中文版)

    通过继承`tornado.websocket.WebSocketHandler`,你可以创建自己的WebSocket处理器,从而实现实时数据传输,如在线聊天、股票更新等场景。 ### 4. HTTP客户端 Tornado提供了`tornado.httpclient`模块,用于发起...

    Tornado聊天框架

    Tornado聊天框架是一个基于Tornado Web服务器和WebSocket协议构建的高效、可扩展的实时通信框架。Tornado是一个Python Web框架,以其异步非阻塞I/O模型而闻名,特别适合处理高并发的网络应用,如聊天系统。在聊天...

    Tornado入门的基本程序

    4. WebSocket:Tornado也支持WebSocket,可以用于实现双向通信。创建WebSocket处理器类似创建HTTP处理器,但需继承自`tornado.websocket.WebSocketHandler`: ```python class WebSocketHandler(tornado....

    SampleWebsocket

    Tornado Websocket是Tornado框架的一部分,提供了一种简单的方式来处理WebSocket请求。要使用Tornado Websocket,首先确保你的Python环境已经安装了Tornado。通过以下命令可以安装: ``` pip install tornado ``` ...

    Tornado教程.pdf

    5. **WebSockets**: Tornado 对 WebSockets 的支持非常出色,提供了一套完整的接口来处理 WebSocket 连接,适合构建实时通信应用。 6. **AsyncHTTPClient**: 异步 HTTP 客户端,用于发起 HTTP 请求,同样基于非阻塞...

    tornado入门大全

    3. **Websocket支持**:Tornado支持Websocket协议,使得服务器能够与客户端建立长连接,实现实时通信。 4. **模板引擎**:Tornado自带了一个简单的模板语言,用于生成HTML响应。 5. **轻量级**:Tornado的设计哲学...

    基于tornado框架的SSH-WebSocket代理程序设计源码

    该项目是一款基于Tornado框架构建的SSH-WebSocket代理程序源码,总共有140个文件,涵盖51个JavaScript文件、26个Python文件、14个CSS文件、7个Vue文件、5个HTML文件,以及其他格式的辅助文件。该程序能够将SSH协议...

    WebSocketDemo

    服务器端通常使用诸如Node.js、Java的WebSocket库(如Jetty或Tomcat)或者Python的Tornado框架等来处理WebSocket连接。在这个WebSocketDemo中,服务器端的代码会包含处理连接、断开连接、接收和发送数据的逻辑。 在...

    qt聊天室tornado服务器.zip

    4. WebSocket模块:Qt也支持WebSocket,通过QWebSocket类可以实现与Tornado服务器的WebSocket连接。 5. 事件驱动:Qt采用信号和槽机制,当用户操作触发特定事件时,如点击发送按钮,相应的槽函数会被调用,执行发送...

Global site tag (gtag.js) - Google Analytics