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    ServerMessagePeerType,
14    ServerMessageRoomCrashed,
15    ServerMessageRoomCreated,
16    ServerMessageRoomDeleted,
17    ServerMessageStreamConnected,
18    ServerMessageStreamDisconnected,
19    ServerMessageTrackAdded,
20    ServerMessageTrackMetadataUpdated,
21    ServerMessageTrackRemoved,
22    ServerMessageViewerConnected,
23    ServerMessageViewerDisconnected,
24)
25from fishjam.events._protos.fishjam.notifications import Track, TrackEncoding, TrackType
26
27__all__ = [
28    "ServerMessageRoomCreated",
29    "ServerMessageRoomDeleted",
30    "ServerMessageRoomCrashed",
31    "ServerMessagePeerAdded",
32    "ServerMessagePeerConnected",
33    "ServerMessagePeerDeleted",
34    "ServerMessagePeerDisconnected",
35    "ServerMessagePeerMetadataUpdated",
36    "ServerMessagePeerCrashed",
37    "ServerMessageStreamConnected",
38    "ServerMessageStreamDisconnected",
39    "ServerMessageTrackAdded",
40    "ServerMessageTrackMetadataUpdated",
41    "ServerMessageTrackRemoved",
42    "ServerMessageViewerConnected",
43    "ServerMessageViewerDisconnected",
44    "Track",
45    "TrackEncoding",
46    "TrackType",
47    "ServerMessagePeerType",
48]
@dataclass(eq=False, repr=False)
class ServerMessageRoomCreated(betterproto.Message):
309@dataclass(eq=False, repr=False)
310class ServerMessageRoomCreated(betterproto.Message):
311    """Notification sent when a room is created"""
312
313    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):
316@dataclass(eq=False, repr=False)
317class ServerMessageRoomDeleted(betterproto.Message):
318    """Notification sent when a room is deleted"""
319
320    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):
220@dataclass(eq=False, repr=False)
221class ServerMessageRoomCrashed(betterproto.Message):
222    """Notification sent when a room crashes"""
223
224    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):
227@dataclass(eq=False, repr=False)
228class ServerMessagePeerAdded(betterproto.Message):
229    """Notification sent when a peer is added"""
230
231    room_id: str = betterproto.string_field(1)
232    peer_id: str = betterproto.string_field(2)
233    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: ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: 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):
245@dataclass(eq=False, repr=False)
246class ServerMessagePeerConnected(betterproto.Message):
247    """Notification sent when a peer connects"""
248
249    room_id: str = betterproto.string_field(1)
250    peer_id: str = betterproto.string_field(2)
251    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: ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: 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):
236@dataclass(eq=False, repr=False)
237class ServerMessagePeerDeleted(betterproto.Message):
238    """Notification sent when a peer is removed"""
239
240    room_id: str = betterproto.string_field(1)
241    peer_id: str = betterproto.string_field(2)
242    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: ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: 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):
254@dataclass(eq=False, repr=False)
255class ServerMessagePeerDisconnected(betterproto.Message):
256    """Notification sent when a peer disconnects from FJ"""
257
258    room_id: str = betterproto.string_field(1)
259    peer_id: str = betterproto.string_field(2)
260    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: ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
peer_type: 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):
347@dataclass(eq=False, repr=False)
348class ServerMessagePeerMetadataUpdated(betterproto.Message):
349    """Notification sent when peer updates its metadata"""
350
351    room_id: str = betterproto.string_field(1)
352    peer_id: str = betterproto.string_field(2)
353    metadata: str = betterproto.string_field(3)
354    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: ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
metadata: str = <object object>
peer_type: 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):
263@dataclass(eq=False, repr=False)
264class ServerMessagePeerCrashed(betterproto.Message):
265    """Notification sent when a peer crashes"""
266
267    room_id: str = betterproto.string_field(1)
268    peer_id: str = betterproto.string_field(2)
269    reason: str = betterproto.string_field(3)
270    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: ServerMessagePeerType = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
reason: str = <object object>
peer_type: 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):
387@dataclass(eq=False, repr=False)
388class ServerMessageStreamConnected(betterproto.Message):
389    """Notification sent when streamer successfully connects"""
390
391    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):
394@dataclass(eq=False, repr=False)
395class ServerMessageStreamDisconnected(betterproto.Message):
396    """Notification sent when streamer disconnects"""
397
398    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):
357@dataclass(eq=False, repr=False)
358class ServerMessageTrackAdded(betterproto.Message):
359    """Notification sent when peer or component adds new track"""
360
361    room_id: str = betterproto.string_field(1)
362    peer_id: str = betterproto.string_field(2, group="endpoint_info")
363    component_id: str = betterproto.string_field(3, group="endpoint_info")
364    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):
377@dataclass(eq=False, repr=False)
378class ServerMessageTrackMetadataUpdated(betterproto.Message):
379    """Notification sent when metadata of a multimedia track is updated"""
380
381    room_id: str = betterproto.string_field(1)
382    peer_id: str = betterproto.string_field(2, group="endpoint_info")
383    component_id: str = betterproto.string_field(3, group="endpoint_info")
384    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):
367@dataclass(eq=False, repr=False)
368class ServerMessageTrackRemoved(betterproto.Message):
369    """Notification sent when a track is removed"""
370
371    room_id: str = betterproto.string_field(1)
372    peer_id: str = betterproto.string_field(2, group="endpoint_info")
373    component_id: str = betterproto.string_field(3, group="endpoint_info")
374    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):
401@dataclass(eq=False, repr=False)
402class ServerMessageViewerConnected(betterproto.Message):
403    """Notification sent when viewer successfully connects"""
404
405    stream_id: str = betterproto.string_field(1)
406    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):
409@dataclass(eq=False, repr=False)
410class ServerMessageViewerDisconnected(betterproto.Message):
411    """Notification sent when viewer disconnects"""
412
413    stream_id: str = betterproto.string_field(1)
414    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
class ServerMessagePeerType(betterproto.Enum):
14class ServerMessagePeerType(betterproto.Enum):
15    PEER_TYPE_UNSPECIFIED = 0
16    PEER_TYPE_WEBRTC = 1
17    PEER_TYPE_AGENT = 2

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

PEER_TYPE_UNSPECIFIED = <ServerMessagePeerType.PEER_TYPE_UNSPECIFIED: 0>
PEER_TYPE_WEBRTC = <ServerMessagePeerType.PEER_TYPE_WEBRTC: 1>
PEER_TYPE_AGENT = <ServerMessagePeerType.PEER_TYPE_AGENT: 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