Python server SDK for the Fishjam.
Read the docs here
pip install fishjam-server-sdk
The SDK exports two main classes for interacting with Fishjam server:
FishjamClient and FishjamNotifier.
FishjamClient wraps http REST api calls, while FishjamNotifier is responsible for receiving real-time updates from the server.
Create a FishjamClient instance, providing the fishjam server address and api token
fromfishjamimportFishjamClientfishjam_client=FishjamClient(fishjam_id="<fishjam_id>", management_token="<management_token>")You can use it to interact with Fishjam to manage rooms and peers
# Create a roomoptions=RoomOptions(video_codec="h264", webhook_url="http://localhost:5000/webhook")
room=fishjam_client.create_room(options=options)
# Room(components=[], config=RoomConfig(max_peers=None, video_codec=<RoomConfigVideoCodec.H264: 'h264'>, webhook_url='http://localhost:5000/webhook'), id='1d905478-ccfc-44d6-a6e7-8ccb1b38d955', peers=[])# Add peer to the roompeer, token=fishjam_client.create_peer(room.id)
# Peer(id='b1232c7e-c969-4450-acdf-ea24f3cdd7f6', status=<PeerStatus.DISCONNECTED: 'disconnected'>, type='webrtc'), 'M8TUGhj-L11KpyG-2zBPIo'All methods in FishjamClient may raise one of the exceptions deriving from fishjam.errors.HTTPError. They are defined in fishjam.errors.
FishjamNotifier allows for receiving real-time updates from the Fishjam Server.
You can read more about notifications in the Fishjam Docs.
Create FishjamNotifier instance
fromfishjamimportFishjamNotifierfishjam_notifier=FishjamNotifier(fishjam_id='<fishjam_id>', management_token='<management_token>')Then define a handler for incoming messages
@notifier.on_server_notificationdefhandle_notification(server_notification):
print(f'Received a notification: {server_notification}')After that you can start the notifier
asyncdeftest_notifier():
notifier_task=asyncio.create_task(fishjam_notifier.connect())
# Wait for notifier to be ready to receive messagesawaitfishjam_notifier.wait_ready()
# Create a room to trigger a server notificationfishjam_client=FishjamClient()
fishjam_client.create_room()
awaitnotifier_taskasyncio.run(test_notifier())
# Received a notification: ServerMessageRoomCreated(room_id='69a3fd1a-6a4d-47bc-ae54-0c72b0d05e29')Licensed under the Apache License, Version 2.0
Since 2012 Software Mansion is a software agency with experience in building web and mobile apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help you build your next dream product – Hire us.