async spin with rclpy.spin_once

This commit is contained in:
Sem van der Hoeven
2023-05-22 12:26:21 +02:00
parent 4864cf339c
commit c3ea77a068

View File

@@ -9,16 +9,18 @@ class ApiListener(Node):
def __init__(self): def __init__(self):
super().__init__('api_listener') super().__init__('api_listener')
self.get_logger().info('ApiListener node started') self.get_logger().info('ApiListener node started')
self.angle = 30 self.server = None
asyncio.async(self.run_api())
async def run_api(self): async def spin(self):
self.get_logger().info('Starting API') self.get_logger().info('Starting API')
self.server = await websockets.serve(self.api_handler, 'localhost', 8765) self.server = await websockets.serve(self.api_handler, 'localhost', 8765)
self.get_logger().info('API started')
await self.server.wait_closed()
async def api_handler(self, websocket): async def api_handler(self, websocket):
try: try:
while True: while rclpy.ok():
rclpy.spin_once(self, timeout_sec=0.1)
message = await websocket.recv() message = await websocket.recv()
self.get_logger().info('Received message: {0}'.format(message)) self.get_logger().info('Received message: {0}'.format(message))
await websocket.send("You sent " + str(message)) await websocket.send("You sent " + str(message))
@@ -26,15 +28,15 @@ class ApiListener(Node):
self.get_logger().info('Connection closed') self.get_logger().info('Connection closed')
def main(args=None): async def main(args=None):
rclpy.init(args=args) rclpy.init(args=args)
api_listener = ApiListener() api_listener = ApiListener()
rclpy.spin(api_listener) await api_listener.spin()
api_listener.destroy_node() api_listener.destroy_node()
rclpy.shutdown() rclpy.shutdown()
if __name__ == '__main__': if __name__ == '__main__':
main() asyncio.run(main())