用tornado实现一个简单的websocket样例
想用SPRING MVC,NODE.JS EXPRESS,TORNADO实现同一个功能,开阔一下视野。
先来TORNADO的吧。。
客户端代码都差不多,主要是服务端代码。
TORNADO的说法:
http://www.tornadoweb.org/en/stable/websocket.html
Override on_message to handle incoming messages, and use write_message to send messages to the client. You can also override open and on_close to handle opened and closed connections.
websocket事件说法:
https://html.spec.whatwg.org/multipage/comms.html#network

服务端代码:
import tornado.web
import tornado.websocket
import tornado.httpserver
import tornado.ioloop
class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        pass
    def on_message(self, message):
        self.write_message(u"Your message was: " + message)
        print message
        self.write_message(u"hahhahahah")
    def on_close(self):
        pass
class IndexPageHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("websockets.html")
class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r'/', IndexPageHandler),
            (r'/ws', WebSocketHandler)
        ]
        settings = {
            'template_path': 'static'
        }
        tornado.web.Application.__init__(self, handlers, **settings)
if __name__ == '__main__':
    ws_app = Application()
    server = tornado.httpserver.HTTPServer(ws_app)
    server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
js代码:
<title>Tornado WebSockets</title>
<strong>Message to Send:</strong> <input type="text" id="msg" maxlength="25">
 <input type="button" onclick="sendMsg();" value="Send">
 <script type="text/javascript">
  function sendMsg() {
      if ("WebSocket" in window) {
          var ws = new WebSocket("ws://localhost:8888/ws");
            ws.onopen = function() {
               ws.send("Hello, world");
            };
            ws.onmessage = function (evt) {
               alert(evt.data);
            };
      }
  }
</script>
样子:

用tornado实现一个简单的websocket样例的更多相关文章
- 【阿菜做实践】利用go语言写一个简单的Pow样例
		本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简单demo.开发IDE用的是JB Golang. 整个项目的文件结构如下: PoWdem ... 
- Openfire/XMPP学习之——一个简单的Smack样例
		昨天讲了Openfire的搭建和配置,今天来讲一下Smack.如果对如何搭建和配置Openfire的,可以参考Openfire/XMPP学习之——Openfire的安装.配置. Smack是一个开源, ... 
- 用 Go 编写一个简单的 WebSocket 推送服务
		用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhong/wserver 获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息 ... 
- springboot搭建一个简单的websocket的实时推送应用
		说一下实用springboot搭建一个简单的websocket 的实时推送应用 websocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 我们以前用的http协议只能单 ... 
- Oracle简单脚本演示样例
		Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR VARCHAR2( ... 
- 10.3.1 一个CONNECT BY的样例
		10.3.1 一个CONNECT BY的样例正在更新内容,请稍后 
- 实现一个简单的WebSocket聊天室
		WebSocket 简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主 ... 
- 【spring教程之中的一个】创建一个最简单的spring样例
		1.首先spring的主要思想,就是依赖注入.简单来说.就是不须要手动new对象,而这些对象由spring容器统一进行管理. 2.样例结构 如上图所看到的,採用的是mavenproject. 2.po ... 
- 用Java构建一个简单的WebSocket聊天室
		前言 首先对于一个简单的聊天室,大家应该都有一定的概念了,这里我们省略用户模块的讲解,而是单纯的先说说聊天室的几个功能:自我对话.好友交流.群聊.离线消息等. 今天我们要做的demo就能帮我们做到这一 ... 
随机推荐
- Selenium UI 举例 getCssValue
			selenium jar包中,在WebElement的接口中, String getCssValue(String var1); 可以通过标签,获取对应的css值.具体要怎么用呢,如下: WebEle ... 
- 简单介绍tomcat中maxThreads,acceptCount,connectionTimeout
			<?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOW ... 
- 【转】float类型在内存中的表示
			http://www.cnblogs.com/onedime/archive/2012/11/19/2778130.html http://blog.csdn.net/adream307/articl ... 
- c语言中的0UL或1UL是什么意思
			0UL 表示 无符号长整型 0 1UL 表示 无符号长整型 1 如果不写UL后缀,系统默认为:int, 即,有符号整数. 1.数值常数有:整型常数.浮点常数:2.只有数值常数才有后缀说明:3.数值常数 ... 
- 【Golang 接口自动化06】微信支付md5签名计算及其优化
			前言 可能看过我博客的朋友知道我主要是做的支付这一块的测试工作.而我们都知道现在比较流行的支付方式就是微信支付和支付宝支付,当然最近在使用低手续费大力推广的京东金融(已改名为京东数科)以后也可能站到第 ... 
- Redis之字符串类型命令
			String(字符串) string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value. string 类型是二进制安全的.意思是 ... 
- 用Omniauth来Login with Facebook(Go-rails课程)
			https://gorails.com/episodes/login-with-facebook?autoplay=1 大概看了一遍,留了视频的截图. https://gorails.com/epis ... 
- Ant Man CodeForces - 704B (图论,贪心)
			大意: 给N个点,起点S终点T,每个点有X,A,B,C,D,根据I和J的X坐标可得I到J的距离计算公式 |xi - xj| + ci + bj seconds if j< i |xi - xj| ... 
- IntelliJ Idea工具使用
			以前一直用eclipse/myeclipse开发,最近因为需要学习了intelliJ Idea工具,感觉真的挺好用的..好用的东西就要掌握加以利用,特写一篇简单的总结(只写大体). 一,什么是Inte ... 
- anaconda环境变量+修改jupyter默认路径
			手贱在安装的时候没有点添加环境变量 安装好后,用anaconda prompt运行一些程序命令之类都是可以的,但是直接打开cmd就不行了,为了省事,所以决定手动添加环境变量, %\ProgramDat ... 
