Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 import rospy
00035 import sys
00036
00037 from socket import error
00038
00039 from tornado.ioloop import IOLoop
00040 from tornado.ioloop import PeriodicCallback
00041 from tornado.web import Application
00042
00043 from rosbridge_server import RosbridgeWebSocket
00044
00045
00046 def shutdown_hook():
00047 IOLoop.instance().stop()
00048
00049 if __name__ == "__main__":
00050 rospy.init_node("rosbridge_websocket")
00051 rospy.on_shutdown(shutdown_hook)
00052
00053
00054 certfile = rospy.get_param('~certfile', None)
00055 keyfile = rospy.get_param('~keyfile', None)
00056
00057 RosbridgeWebSocket.authenticate = rospy.get_param('~authenticate', False)
00058 port = rospy.get_param('~port', 9090)
00059 address = rospy.get_param('~address', "")
00060
00061 if "--port" in sys.argv:
00062 idx = sys.argv.index("--port")+1
00063 if idx < len(sys.argv):
00064 port = int(sys.argv[idx])
00065 else:
00066 print "--port argument provided without a value."
00067 sys.exit(-1)
00068
00069 application = Application([(r"/", RosbridgeWebSocket), (r"", RosbridgeWebSocket)])
00070
00071 connected = False
00072 while(not connected):
00073 try:
00074 if certfile is not None and keyfile is not None:
00075 application.listen(port, address, ssl_options={ "certfile": certfile, "keyfile": keyfile})
00076 else:
00077 application.listen(port, address)
00078 rospy.loginfo("Rosbridge WebSocket server started on port %d", port)
00079 connected = True
00080 except error as e:
00081 rospy.logwarn("Unable to start server: " + str(e) + " Retrying in 2s.")
00082 rospy.sleep(2.)
00083
00084 IOLoop.instance().start()