add api basics

This commit is contained in:
Sem van der Hoeven
2023-05-22 11:51:19 +02:00
parent 39e32fb796
commit 7f5ab30962
4 changed files with 44 additions and 4 deletions

View File

@@ -0,0 +1,38 @@
import rclpy
from rclpy.node import Node
import asyncio
import websockets.server
class ApiListener(Node):
def __init__(self):
super().__init__('api_listener')
self.get_logger().info('ApiListener node started')
asyncio.run(self.run_api())
async def run_api(self):
self.get_logger().info('Starting API')
self.server = await websockets.serve(self.api_handler, 'localhost', 8765)
async def api_handler(self, websocket):
try:
while True:
message = await websocket.recv()
self.get_logger().info('Received message: {0}'.format(message))
await websocket.send("You sent " + str(message))
except websockets.exceptions.ConnectionClosed:
self.get_logger().info('Connection closed')
def main(args=None):
rclpy.init(args=args)
api_listener = ApiListener()
rclpy.spin(api_listener)
api_listener.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()

View File

@@ -3,9 +3,10 @@
<package format="3">
<name>api_communication</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="semmer99@gmail.com">ubuntu</maintainer>
<license>TODO: License declaration</license>
<description>package for communicating with edge computer through 5G</description>
<maintainer email="semmer99@gmail.com">sem</maintainer>
<license>Apache License 2.0</license>
<depend>rclpy</depend>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>

View File

@@ -20,6 +20,7 @@ setup(
tests_require=['pytest'],
entry_points={
'console_scripts': [
'api_listener = api_communication.api_listener:main'
],
},
)