1. 程式人生 > >[tornado]websocket 最簡單demo

[tornado]websocket 最簡單demo

想法

前兩天想看看django 長輪詢或者是websocket的方案,發現都不太好使。 tornado很適合做這個工作,於是找了些資料,參照了做了個最簡單demo,以便備用。

具體的概念就不說了,tornado沒怎麼用過,但是python的web框架入門起來都是基本相當,沒什麼難度,即使沒用過,看懂還是挺容易的。

檔案目錄


程式碼清單

ws_app.py

#-*- encoding:utf-8 -*-
#2014-12-18
#author: orangleliu

import tornado.web
import tornado.websocket
import tornado.httpserver
import tornado.ioloop

class IndexPageHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('index.html')

class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def check_origin(self, origin):
        return True

    def open(self):
        pass

    def on_message(self, message):
        self.write_message(u"Your message was: "+message)

    def on_close(self):
        pass

class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r'/', IndexPageHandler),
            (r'/ws', WebSocketHandler)
        ]

        settings = { "template_path": "."}
        tornado.web.Application.__init__(self, handlers, **settings)

if __name__ == '__main__':
    ws_app = Application()
    server = tornado.httpserver.HTTPServer(ws_app)
    server.listen(8080)
    tornado.ioloop.IOLoop.instance().start()

'''
python ws_app.py
'''

index.html

<!DOCTYPE HTML>
<html lang="zh-cn">
<head>
	<meta charset="UTF-8">
	<title>Tornado Websocket</title>
</head>
<script type="text/javascript">
	var ws;
	function onLoad(){
		ws = new WebSocket("ws://localhost:8080/ws");
		ws.onmessage = function(e){
			alert(e.data)
		}
	}


	function sendMsg(){
		ws.send(document.getElementById('msg').value);
	}
</script>
<body onload='onLoad();'>
	Message to send:   <input type="text" id="msg" />
	  <input type="button" onclick="sendMsg();" value="傳送" />
</body>
</html>

遇到的問題

在websocket除錯的時候總是出現403錯誤

實驗結果


參考文章

相關推薦

[tornado]websocket 簡單demo

想法 前兩天想看看django 長輪詢或者是websocket的方案,發現都不太好使。 tornado很適合做這個工作,於是找了些資料,參照了做了個最簡單demo,以便備用。 具體的概念就不說了,tornado沒怎麼用過,但是python的web框架入門起來都是基本相當,沒

vue2.0使用websocket簡單demo

1.首次接觸websocket,花了一天多的時間尋找相關資料,參考了網路上的相關例子(https://www.cnblogs.com/qilin-3611/p/7054270.html),整理出一個簡單前端、後臺demo,後臺demo直接使用連結中的文章的demo,下載後部署在8.0以上的tomca

Hibernate5.3.6之簡單demo

剛開始學習hibernate,把自己做第一個demo記錄下來,方便以後檢視 jdk版本:1.8 MySQL版本:8.0 mysql連線驅動版本:8.0.12 Hibernate版本:5.3.6 1.這個是我的目錄結構: 需要的Hibernate包 2.編

[tornado示例]簡單的表單輸入和顯示

有時候做一些簡單的前端學習的時候可能需要表單來配合ajax和後臺互動的模擬。 python版本 2.7.5 tornado版本 3.0.1 so: win7 #!/usr/bin/env pytho

spark簡單demo解讀

object AstronTest { def main(args: Array[String]): Unit = { println("hello,astron!") } } obj

訊息推送springboot+websocket簡單demo

這裡為了方便,使用springboot實現。模板引擎使用thymeleaf(預設)。 springboot+websocket demo下載:https://gitee.com/chen_jia_hao/websocket 1、Intellj Idea 建立新的springboot專案。

一個gtk3的css使用的簡單demo

  首先裝好gtk3的依賴,不管是fedora還是ubuntu裝好之後執行: pkg-config --cflags --libs "gtk+-3.0"  能正常顯示gtk3的依賴情況說明gtk3已經裝好,之後編譯: gcc css-demo.c `pkg-c

【koa】koa入門,一個簡單的koa demo

const Koa = require('koa'); // 建立一個Koa物件表示web app本身: const app = new Koa(); // 對於任何請求,app將呼叫該非同步函式處理請求: app.use(async (ctx, next)

Kettle學習------簡單的第二個Demo

將MySQL資料庫的表全量匯入Qracle中: 1、新建轉換 2.連線Oracle 3、連線MySQL 4、拖動一個表輸入和一個表輸出至空白區,雙擊表輸入,資料庫連線選擇MySQL(我這裡名字叫tcc) 5、按住Shift鍵將兩個連起來,雙擊表輸出,選擇資料庫連線為O

Flask-login 簡單 Demo簡單的實現登入方法

Flask-login 簡單 Demo, 最簡單的實現登入方法 * 當使用MethodView的時候,login_required 使用方法 class XxxxView(MethodView): decorators = [login_required] #

(二)Web框架-龍捲風Tornado之世界上簡單Tornado示例

原始碼 # _*_coding:utf-8_*_ import tornado.ioloop import tornado.web class MainHandler(tornado.web.R

spring boot + webSocket 實現簡單會話與線上人數統計的demo

webSocket推送是常用於生產專案的模組,在我們部門做的一個彙報演示的demo中遇到了webSocket的一些問題。 自己下來看看了看webSocket的東西,結合spring boot 做了一個簡單的demo; 介紹的部分大家可以參考眾多的帖子,度娘 http://w

簡單快速的仿微信聊天 demo

TestChatdemo 專案地址:PangHaHa12138/TestChatdemo  簡介:a demo for Android chat look like Weixin 最簡單快速的仿微信聊天 demo 附贈微信原生表情,qq 原生表情 更多:作者 &nbs

Dubbo:Dubbo入門---搭建一個簡單Demo框架

https://blog.csdn.net/noaman_wgs/article/details/70214612 Dubbo是什麼 Dubbo是: 一款分散式服務框架 高效能和透明化的RPC遠端服務呼叫方案 SOA服務治理方案 每天為2千多個服務提供大於30億次訪問量支援,

Android開發之BlueTooth--簡單的Andorid傳統藍芽通訊Demo

又到了Android小白的開發之路上寫筆記的時間了~~ 開篇都不知道說什麼好... ...前兩個月寫了WIFI,後來也想寫一下藍芽的,可惜公司產品不給力,出現了很多BUG,一直在修啊修,最近終於有點空閒時間了。那就來簡單的嘗試一下 關於藍芽開發,優秀部落格一大片,你能來看我

基於TCP實現的簡單RPC demo

package com.caicongyang.provider; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflec

tornado實現一個簡單websocket樣例

想用SPRING MVC,NODE.JS EXPRESS,TORNADO實現同一個功能,開闊一下視野。 先來TORNADO的吧。。 客戶端程式碼都差不多,主要是服務端程式碼。 TORNADO的說法: http://www.tornadoweb.org/en/stable/websocket.html

android簡單的生成二維碼demo

package com.example.administrator.twocodedemo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; impo

Dubbo入門---搭建一個簡單Demo框架

Dubbo背景和簡介 Dubbo開始於電商系統,因此在這裡先從電商系統的演變講起。 單一應用框架(ORM) 當網站流量很小時,只需一個應用,將所有功能如下單支付等都部署在一起,以減少部署節點和成本。 缺點:單一的系統架構,使得在開發過程中,佔用的資源越來越多,而且隨著流量的增加越來越難以維護 垂

tornado websocket程式設計(1) 初識websocket ——簡單購物車實現

tornado websocket程式設計 : 初識websocket ——簡單購物車實 app.py 基本結構(或者說是一個手腳架吧,一步一步的新增我們需要的功能) #!/usr/bin/env python # -*-coding:utf-8