您的位置:首页 > 其它

tornado websocket简单教程

2017-05-05 17:33 267 查看
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.onclosepython实例: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方法,不同情况传不同参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息