tornado websocket简单教程

 
  

websocket是非常好用的,可以解决很多web页面看似解决不了的问题,让web与app客户端更加相似

想要使用tornado上的websocket接口,需要搭建基础的tornado应用,

 
  

tornado十分好部署(下载地址)

$ wget https://github.com/downloads/facebook/tornado/tornado-2.4.1.tar.gz

几个命令安装就好了

$ tar -z -xv -f tornado-2.4.1.tar.gz $ cd tornado-2.4.1 $ python3 setup.py build $ sudo python3 setup.py install

安装好后会在目录下找到一个tornado的目录 进去找到demo文件夹中hello这个项目,这是个测试项目然后执行 $ python3 hello.py 

如果没有报错则安装成功,hello项目下template文件夹是html文件的目录

 
  

tornado的使用不在这里多做赘述,我们来看一下tornado继承的websocket类(websocket.WebSocketHandler)

继承了这个类以后需要重写这个类下面的三个函数

def open(self): 链接成功时触发 def on_message(self, message):发送数据时触发 def on_close(self):链接端关闭时触发

html的链接方式

var ws=new websocket("wss://........")

链接成功以后上面的三个函数分别对应,html的三个函数

ws.onpen=function(event){}

ws.onmessage=functing(event){}

ws.onclose=function(event){}

这样就好解释了,当你连接成功后,

html用ws.send()函数来发送数据

发送成功后触发open函数,open触发html的open,on_message触发ws.onmessage,on_close触发ws.onclose

python实例:

class Sendshow_simulation(websocket.WebSocketHandler):       def check_origin(self,origin): '''跨域修正'''             return True

      def open(self,uid):           '''open''' self.write_message("open successful") pass

      def on_message(self, message): '''on_message''' self.write_message("ok")       def on_close(self): '''on_close'''           pass

如此这般,就可以和html前台交互数据了

当然,还有很多,比如分用户推送,聊天室之类的功能,都跟普通socket功能差不多

当你要用tornado做服务器的时候,就涉及到跨域,和部署websocket服务器的问题

location /websock/ {     proxy_pass_header Server;     proxy_set_header Host $http_host;     proxy_redirect off;     proxy_set_header X-Real-IP $remote_addr;     proxy_set_header X-Scheme $scheme;     proxy_set_header Upgrade $http_upgrade;     proxy_set_header Connection "upgrade";     proxy_pass http://192.168.0.86:8000; }

在nginx中部署wss的websocket方法,不同情况传不同参数







你可能感兴趣的:(tornado websocket简单教程)