< >
Home » rosbridge_suite教程 » rosbridge_suite入门教程-rosbridge_server代码解读

rosbridge_suite入门教程-rosbridge_server代码解读

rosbridge_suite入门教程-rosbridge_server代码解读

说明:

  • 介绍rosbridge_server提供的多种服务器模式及实现

代码目录结构:

├── CHANGELOG.rst
├── CMakeLists.txt
├── launch                            #启动
│   ├── rosbridge_tcp.launch          #启动TCP服务器,调用rosbridge_tcp.py
│   ├── rosbridge_udp.launch          #启动UDP服务器,调用rosbridge_udp.py    
│   └── rosbridge_websocket.launch    #启动WEBSOCKET服务器,调用rosbridge_websocket.py
├── package.xml
├── scripts
│   ├── rosbridge_tcp -> ./rosbridge_tcp.py
│   ├── rosbridge_tcp.py              #ros TCP节点, 利用SocketServer实现TCP通讯
│   ├── rosbridge_udp -> rosbridge_udp.py
│   ├── rosbridge_udp.py              #ros UPD节点,利用reactor.listenUDP实现UDP通讯
│   ├── rosbridge_websocket -> rosbridge_websocket.py
│   └── rosbridge_websocket.py        #ros websocket节点,利用tornado.web实现websocket通讯
├── setup.py
└── src
    ├── backports
    │   ├── __init__.py
    │   └── ssl_match_hostname
    │       ├── __init__.py
    │       ├── LICENSE.txt
    │       └── README.txt
    ├── rosbridge_server             #服务器处理
    │   ├── __init__.py
    │   ├── tcp_handler.py           #实现RosbridgeTcpSocket类,用于处理TCP消息
    │   ├── udp_handler.py           #实现RosbridgeUdpFactory类和RosbridgeUdpSocket类,用于处理UDP消息
    │   ├── websocket_handler.py     #实现RosbridgeWebSocket类,用于处理websocket消息
    └── tornado                      #Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本
        ├── auth.py
        ├── autoreload.py
        ├── concurrent.py
        ├── curl_httpclient.py
        ├── escape.py
        ├── gen.py
        ├── http1connection.py
        ├── httpclient.py
        ├── httpserver.py
        ├── httputil.py
        ├── __init__.py
        ├── ioloop.py
        ├── iostream.py
        ├── locale.py
        ├── log.py
        ├── log.pyc
        ├── netutil.py
        ├── options.py
        ├── platform
        │   ├── asyncio.py
        │   ├── auto.py
        │   ├── auto.pyc
        │   ├── caresresolver.py
        │   ├── common.py
        │   ├── epoll.py
        │   ├── epoll.pyc
        │   ├── __init__.py
        │   ├── interface.py
        │   ├── kqueue.py
        │   ├── posix.py
        │   ├── select.py
        │   ├── twisted.py
        │   └── windows.py
        ├── process.py
        ├── simple_httpclient.py
        ├── speedups.c
        ├── stack_context.py
        ├── tcpclient.py
        ├── tcpserver.py
        ├── template.py
        ├── test
        │   ├── auth_test.py
        │   ├── concurrent_test.py
        │   ├── csv_translations
        │   │   └── fr_FR.csv
        │   ├── curl_httpclient_test.py
        │   ├── escape_test.py
        │   ├── gen_test.py
        │   ├── gettext_translations
        │   │   └── fr_FR
        │   │       └── LC_MESSAGES
        │   │           ├── tornado_test.mo
        │   │           └── tornado_test.po
        │   ├── httpclient_test.py
        │   ├── httpserver_test.py
        │   ├── httputil_test.py
        │   ├── import_test.py
        │   ├── __init__.py
        │   ├── ioloop_test.py
        │   ├── iostream_test.py
        │   ├── locale_test.py
        │   ├── log_test.py
        │   ├── __main__.py
        │   ├── netutil_test.py
        │   ├── options_test.cfg
        │   ├── options_test.py
        │   ├── process_test.py
        │   ├── README
        │   ├── resolve_test_helper.py
        │   ├── runtests.py
        │   ├── simple_httpclient_test.py
        │   ├── stack_context_test.py
        │   ├── static
        │   │   ├── dir
        │   │   │   └── index.html
        │   │   └── robots.txt
        │   ├── tcpclient_test.py
        │   ├── templates
        │   │   └── utf8.html
        │   ├── template_test.py
        │   ├── test.crt
        │   ├── testing_test.py
        │   ├── test.key
        │   ├── twisted_test.py
        │   ├── util.py
        │   ├── util_test.py
        │   ├── websocket_test.py
        │   ├── web_test.py
        │   └── wsgi_test.py
        ├── testing.py
        ├── util.py
        ├── web.py
        ├── websocket.py
        └── wsgi.py

重要文件说明:

SocketServer

  • SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端
  • https://docs.python.org/2/library/socketserver.html
  • http://www.cnblogs.com/zhangkui/p/5655428.html
  • http://blog.csdn.net/ghostfromheaven/article/details/8653421

Twisted/reactor

  • Twisted 是用Python实现的基于事件驱动的网络引擎框架
  • http://www.cnblogs.com/whiggzhaohong/p/5401679.html
  • http://www.tuicool.com/articles/MJBviuM

tornado

  • Tornado是FriendFeed使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本
  • http://www.tornadoweb.cn/
  • http://www.tornadoweb.cn/documentation
  • http://www.tornadoweb.org/en/stable/

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: rosbridge_suite入门教程