Fishjam Python Server SDK

Server Notifications

Fishjam sends server side notifications whenever some important event occurs, e.g.:

  • a room has been created
  • a peer has connected
  • component has crashed
  • etc.

This is the list of all available notifications:

 1"""
 2.. include:: ../../docs/server_notifications.md
 3"""
 4
 5# Exported messages
 6from fishjam.events._protos.fishjam import (
 7    ServerMessagePeerAdded,
 8    ServerMessagePeerConnected,
 9    ServerMessagePeerCrashed,
10    ServerMessagePeerDeleted,
11    ServerMessagePeerDisconnected,
12    ServerMessagePeerMetadataUpdated,
13    ServerMessageRoomCrashed,
14    ServerMessageRoomCreated,
15    ServerMessageRoomDeleted,
16    ServerMessageStreamConnected,
17    ServerMessageStreamDisconnected,
18    ServerMessageTrackAdded,
19    ServerMessageTrackMetadataUpdated,
20    ServerMessageTrackRemoved,
21    ServerMessageViewerConnected,
22    ServerMessageViewerDisconnected,
23)
24from fishjam.events._protos.fishjam.notifications import Track, TrackEncoding, TrackType
25
26__all__ = [
27    "ServerMessageRoomCreated",
28    "ServerMessageRoomDeleted",
29    "ServerMessageRoomCrashed",
30    "ServerMessagePeerAdded",
31    "ServerMessagePeerConnected",
32    "ServerMessagePeerDeleted",
33    "ServerMessagePeerDisconnected",
34    "ServerMessagePeerMetadataUpdated",
35    "ServerMessagePeerCrashed",
36    "ServerMessageStreamConnected",
37    "ServerMessageStreamDisconnected",
38    "ServerMessageTrackAdded",
39    "ServerMessageTrackMetadataUpdated",
40    "ServerMessageTrackRemoved",
41    "ServerMessageViewerConnected",
42    "ServerMessageViewerDisconnected",
43    "Track",
44    "TrackEncoding",
45    "TrackType",
46]
@dataclass(eq=False, repr=False)
class ServerMessageRoomCreated(betterproto.Message):
279@dataclass(eq=False, repr=False)
280class ServerMessageRoomCreated(betterproto.Message):
281    """Notification sent when a room is created"""
282
283    room_id: str = betterproto.string_field(1)

Notification sent when a room is created

ServerMessageRoomCreated(room_id: str = <object object>)
room_id: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageRoomDeleted(betterproto.Message):
286@dataclass(eq=False, repr=False)
287class ServerMessageRoomDeleted(betterproto.Message):
288    """Notification sent when a room is deleted"""
289
290    room_id: str = betterproto.string_field(1)

Notification sent when a room is deleted

ServerMessageRoomDeleted(room_id: str = <object object>)
room_id: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageRoomCrashed(betterproto.Message):
190@dataclass(eq=False, repr=False)
191class ServerMessageRoomCrashed(betterproto.Message):
192    """Notification sent when a room crashes"""
193
194    room_id: str = betterproto.string_field(1)

Notification sent when a room crashes

ServerMessageRoomCrashed(room_id: str = <object object>)
room_id: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessagePeerAdded(betterproto.Message):
197@dataclass(eq=False, repr=False)
198class ServerMessagePeerAdded(betterproto.Message):
199    """Notification sent when a peer is added"""
200
201    room_id: str = betterproto.string_field(1)
202    peer_id: str = betterproto.string_field(2)
203    peer_type: "ServerMessagePeerType" = betterproto.enum_field(3)

Notification sent when a peer is added

ServerMessagePeerAdded( room_id: str = <object object>, peer_id: str = <object object>, peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessagePeerConnected(betterproto.Message):
215@dataclass(eq=False, repr=False)
216class ServerMessagePeerConnected(betterproto.Message):
217    """Notification sent when a peer connects"""
218
219    room_id: str = betterproto.string_field(1)
220    peer_id: str = betterproto.string_field(2)
221    peer_type: "ServerMessagePeerType" = betterproto.enum_field(3)

Notification sent when a peer connects

ServerMessagePeerConnected( room_id: str = <object object>, peer_id: str = <object object>, peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessagePeerDeleted(betterproto.Message):
206@dataclass(eq=False, repr=False)
207class ServerMessagePeerDeleted(betterproto.Message):
208    """Notification sent when a peer is removed"""
209
210    room_id: str = betterproto.string_field(1)
211    peer_id: str = betterproto.string_field(2)
212    peer_type: "ServerMessagePeerType" = betterproto.enum_field(3)

Notification sent when a peer is removed

ServerMessagePeerDeleted( room_id: str = <object object>, peer_id: str = <object object>, peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessagePeerDisconnected(betterproto.Message):
224@dataclass(eq=False, repr=False)
225class ServerMessagePeerDisconnected(betterproto.Message):
226    """Notification sent when a peer disconnects from FJ"""
227
228    room_id: str = betterproto.string_field(1)
229    peer_id: str = betterproto.string_field(2)
230    peer_type: "ServerMessagePeerType" = betterproto.enum_field(3)

Notification sent when a peer disconnects from FJ

ServerMessagePeerDisconnected( room_id: str = <object object>, peer_id: str = <object object>, peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessagePeerMetadataUpdated(betterproto.Message):
317@dataclass(eq=False, repr=False)
318class ServerMessagePeerMetadataUpdated(betterproto.Message):
319    """Notification sent when peer updates its metadata"""
320
321    room_id: str = betterproto.string_field(1)
322    peer_id: str = betterproto.string_field(2)
323    metadata: str = betterproto.string_field(3)
324    peer_type: "ServerMessagePeerType" = betterproto.enum_field(4)

Notification sent when peer updates its metadata

ServerMessagePeerMetadataUpdated( room_id: str = <object object>, peer_id: str = <object object>, metadata: str = <object object>, peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
metadata: str = <object object>
peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessagePeerCrashed(betterproto.Message):
233@dataclass(eq=False, repr=False)
234class ServerMessagePeerCrashed(betterproto.Message):
235    """Notification sent when a peer crashes"""
236
237    room_id: str = betterproto.string_field(1)
238    peer_id: str = betterproto.string_field(2)
239    reason: str = betterproto.string_field(3)
240    peer_type: "ServerMessagePeerType" = betterproto.enum_field(4)

Notification sent when a peer crashes

ServerMessagePeerCrashed( room_id: str = <object object>, peer_id: str = <object object>, reason: str = <object object>, peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
reason: str = <object object>
peer_type: fishjam.events._protos.fishjam.ServerMessagePeerType = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageStreamConnected(betterproto.Message):
357@dataclass(eq=False, repr=False)
358class ServerMessageStreamConnected(betterproto.Message):
359    """Notification sent when streamer successfully connects"""
360
361    stream_id: str = betterproto.string_field(1)

Notification sent when streamer successfully connects

ServerMessageStreamConnected(stream_id: str = <object object>)
stream_id: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageStreamDisconnected(betterproto.Message):
364@dataclass(eq=False, repr=False)
365class ServerMessageStreamDisconnected(betterproto.Message):
366    """Notification sent when streamer disconnects"""
367
368    stream_id: str = betterproto.string_field(1)

Notification sent when streamer disconnects

ServerMessageStreamDisconnected(stream_id: str = <object object>)
stream_id: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageTrackAdded(betterproto.Message):
327@dataclass(eq=False, repr=False)
328class ServerMessageTrackAdded(betterproto.Message):
329    """Notification sent when peer or component adds new track"""
330
331    room_id: str = betterproto.string_field(1)
332    peer_id: str = betterproto.string_field(2, group="endpoint_info")
333    component_id: str = betterproto.string_field(3, group="endpoint_info")
334    track: "notifications.Track" = betterproto.message_field(4)

Notification sent when peer or component adds new track

ServerMessageTrackAdded( room_id: str = <object object>, peer_id: str = <object object>, component_id: str = <object object>, track: Track = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
track: Track = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageTrackMetadataUpdated(betterproto.Message):
347@dataclass(eq=False, repr=False)
348class ServerMessageTrackMetadataUpdated(betterproto.Message):
349    """Notification sent when metadata of a multimedia track is updated"""
350
351    room_id: str = betterproto.string_field(1)
352    peer_id: str = betterproto.string_field(2, group="endpoint_info")
353    component_id: str = betterproto.string_field(3, group="endpoint_info")
354    track: "notifications.Track" = betterproto.message_field(4)

Notification sent when metadata of a multimedia track is updated

ServerMessageTrackMetadataUpdated( room_id: str = <object object>, peer_id: str = <object object>, component_id: str = <object object>, track: Track = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
track: Track = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageTrackRemoved(betterproto.Message):
337@dataclass(eq=False, repr=False)
338class ServerMessageTrackRemoved(betterproto.Message):
339    """Notification sent when a track is removed"""
340
341    room_id: str = betterproto.string_field(1)
342    peer_id: str = betterproto.string_field(2, group="endpoint_info")
343    component_id: str = betterproto.string_field(3, group="endpoint_info")
344    track: "notifications.Track" = betterproto.message_field(4)

Notification sent when a track is removed

ServerMessageTrackRemoved( room_id: str = <object object>, peer_id: str = <object object>, component_id: str = <object object>, track: Track = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
track: Track = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageViewerConnected(betterproto.Message):
371@dataclass(eq=False, repr=False)
372class ServerMessageViewerConnected(betterproto.Message):
373    """Notification sent when viewer successfully connects"""
374
375    stream_id: str = betterproto.string_field(1)
376    viewer_id: str = betterproto.string_field(2)

Notification sent when viewer successfully connects

ServerMessageViewerConnected(stream_id: str = <object object>, viewer_id: str = <object object>)
stream_id: str = <object object>
viewer_id: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class ServerMessageViewerDisconnected(betterproto.Message):
379@dataclass(eq=False, repr=False)
380class ServerMessageViewerDisconnected(betterproto.Message):
381    """Notification sent when viewer disconnects"""
382
383    stream_id: str = betterproto.string_field(1)
384    viewer_id: str = betterproto.string_field(2)

Notification sent when viewer disconnects

ServerMessageViewerDisconnected(stream_id: str = <object object>, viewer_id: str = <object object>)
stream_id: str = <object object>
viewer_id: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
@dataclass(eq=False, repr=False)
class Track(betterproto.Message):
26@dataclass(eq=False, repr=False)
27class Track(betterproto.Message):
28    """Describes a media track"""
29
30    id: str = betterproto.string_field(1)
31    type: "TrackType" = betterproto.enum_field(2)
32    metadata: str = betterproto.string_field(3)

Describes a media track

Track( id: str = <object object>, type: TrackType = <object object>, metadata: str = <object object>)
id: str = <object object>
type: TrackType = <object object>
metadata: str = <object object>
Inherited Members
betterproto.Message
SerializeToString
parse
FromString
to_dict
from_dict
to_json
from_json
to_pydict
from_pydict
is_set
class TrackEncoding(betterproto.Enum):
20class TrackEncoding(betterproto.Enum):
21    TRACK_ENCODING_UNSPECIFIED = 0
22    TRACK_ENCODING_PCM16 = 1
23    TRACK_ENCODING_OPUS = 2

The base class for protobuf enumerations, all generated enumerations will inherit from this. Bases enum.IntEnum.

TRACK_ENCODING_UNSPECIFIED = <TrackEncoding.TRACK_ENCODING_UNSPECIFIED: 0>
TRACK_ENCODING_PCM16 = <TrackEncoding.TRACK_ENCODING_PCM16: 1>
TRACK_ENCODING_OPUS = <TrackEncoding.TRACK_ENCODING_OPUS: 2>
Inherited Members
betterproto.Enum
from_string
enum.Enum
name
value
builtins.int
conjugate
bit_length
bit_count
to_bytes
from_bytes
as_integer_ratio
is_integer
real
imag
numerator
denominator
class TrackType(betterproto.Enum):
12class TrackType(betterproto.Enum):
13    """Defines types of tracks being published by peers and component"""
14
15    TRACK_TYPE_UNSPECIFIED = 0
16    TRACK_TYPE_VIDEO = 1
17    TRACK_TYPE_AUDIO = 2

Defines types of tracks being published by peers and component

TRACK_TYPE_UNSPECIFIED = <TrackType.TRACK_TYPE_UNSPECIFIED: 0>
TRACK_TYPE_VIDEO = <TrackType.TRACK_TYPE_VIDEO: 1>
TRACK_TYPE_AUDIO = <TrackType.TRACK_TYPE_AUDIO: 2>
Inherited Members
betterproto.Enum
from_string
enum.Enum
name
value
builtins.int
conjugate
bit_length
bit_count
to_bytes
from_bytes
as_integer_ratio
is_integer
real
imag
numerator
denominator