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""".. include:: ../../docs/server_notifications.md"""
 2
 3# Exported messages
 4from fishjam.events._protos.fishjam import (
 5    ServerMessageChannelAdded,
 6    ServerMessageChannelRemoved,
 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    ServerMessageStreamerConnected,
20    ServerMessageStreamerDisconnected,
21    ServerMessageTrackAdded,
22    ServerMessageTrackMetadataUpdated,
23    ServerMessageTrackRemoved,
24    ServerMessageViewerConnected,
25    ServerMessageViewerDisconnected,
26)
27from fishjam.events._protos.fishjam.notifications import Track, TrackEncoding, TrackType
28
29__all__ = [
30    "ServerMessageRoomCreated",
31    "ServerMessageRoomDeleted",
32    "ServerMessageRoomCrashed",
33    "ServerMessagePeerAdded",
34    "ServerMessagePeerConnected",
35    "ServerMessagePeerDeleted",
36    "ServerMessagePeerDisconnected",
37    "ServerMessagePeerMetadataUpdated",
38    "ServerMessagePeerCrashed",
39    "ServerMessageStreamConnected",
40    "ServerMessageStreamDisconnected",
41    "ServerMessageStreamerConnected",
42    "ServerMessageStreamerDisconnected",
43    "ServerMessageChannelAdded",
44    "ServerMessageChannelRemoved",
45    "ServerMessageTrackAdded",
46    "ServerMessageTrackMetadataUpdated",
47    "ServerMessageTrackRemoved",
48    "ServerMessageViewerConnected",
49    "ServerMessageViewerDisconnected",
50    "Track",
51    "TrackEncoding",
52    "TrackType",
53    "ServerMessagePeerType",
54]
@dataclass(eq=False, repr=False)
class ServerMessageRoomCreated(betterproto.Message):
374@dataclass(eq=False, repr=False)
375class ServerMessageRoomCreated(betterproto.Message):
376    """Notification sent when a room is created"""
377
378    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):
381@dataclass(eq=False, repr=False)
382class ServerMessageRoomDeleted(betterproto.Message):
383    """Notification sent when a room is deleted"""
384
385    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):
285@dataclass(eq=False, repr=False)
286class ServerMessageRoomCrashed(betterproto.Message):
287    """Notification sent when a room crashes"""
288
289    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):
292@dataclass(eq=False, repr=False)
293class ServerMessagePeerAdded(betterproto.Message):
294    """Notification sent when a peer is added"""
295
296    room_id: str = betterproto.string_field(1)
297    peer_id: str = betterproto.string_field(2)
298    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):
310@dataclass(eq=False, repr=False)
311class ServerMessagePeerConnected(betterproto.Message):
312    """Notification sent when a peer connects"""
313
314    room_id: str = betterproto.string_field(1)
315    peer_id: str = betterproto.string_field(2)
316    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):
301@dataclass(eq=False, repr=False)
302class ServerMessagePeerDeleted(betterproto.Message):
303    """Notification sent when a peer is removed"""
304
305    room_id: str = betterproto.string_field(1)
306    peer_id: str = betterproto.string_field(2)
307    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):
319@dataclass(eq=False, repr=False)
320class ServerMessagePeerDisconnected(betterproto.Message):
321    """Notification sent when a peer disconnects from FJ"""
322
323    room_id: str = betterproto.string_field(1)
324    peer_id: str = betterproto.string_field(2)
325    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):
412@dataclass(eq=False, repr=False)
413class ServerMessagePeerMetadataUpdated(betterproto.Message):
414    """Notification sent when peer updates its metadata"""
415
416    room_id: str = betterproto.string_field(1)
417    peer_id: str = betterproto.string_field(2)
418    metadata: str = betterproto.string_field(3)
419    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):
328@dataclass(eq=False, repr=False)
329class ServerMessagePeerCrashed(betterproto.Message):
330    """Notification sent when a peer crashes"""
331
332    room_id: str = betterproto.string_field(1)
333    peer_id: str = betterproto.string_field(2)
334    reason: str = betterproto.string_field(3)
335    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):
511@dataclass(eq=False, repr=False)
512class ServerMessageStreamConnected(betterproto.Message):
513    """Notification sent when streamer successfully connects"""
514
515    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):
518@dataclass(eq=False, repr=False)
519class ServerMessageStreamDisconnected(betterproto.Message):
520    """Notification sent when streamer disconnects"""
521
522    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 ServerMessageStreamerConnected(betterproto.Message):
541@dataclass(eq=False, repr=False)
542class ServerMessageStreamerConnected(betterproto.Message):
543    stream_id: str = betterproto.string_field(1)
544    streamer_id: str = betterproto.string_field(2)
ServerMessageStreamerConnected(stream_id: str = <object object>, streamer_id: str = <object object>)
stream_id: str = <object object>
streamer_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 ServerMessageStreamerDisconnected(betterproto.Message):
547@dataclass(eq=False, repr=False)
548class ServerMessageStreamerDisconnected(betterproto.Message):
549    stream_id: str = betterproto.string_field(1)
550    streamer_id: str = betterproto.string_field(2)
ServerMessageStreamerDisconnected(stream_id: str = <object object>, streamer_id: str = <object object>)
stream_id: str = <object object>
streamer_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 ServerMessageChannelAdded(betterproto.Message):
452@dataclass(eq=False, repr=False)
453class ServerMessageChannelAdded(betterproto.Message):
454    """Notification sent when a peer creates a channel"""
455
456    room_id: str = betterproto.string_field(1)
457    peer_id: str = betterproto.string_field(2, group="endpoint_info")
458    component_id: str = betterproto.string_field(3, group="endpoint_info")
459    channel_id: str = betterproto.string_field(4)

Notification sent when a peer creates a channel

ServerMessageChannelAdded( room_id: str = <object object>, peer_id: str = <object object>, component_id: str = <object object>, channel_id: str = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
channel_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 ServerMessageChannelRemoved(betterproto.Message):
462@dataclass(eq=False, repr=False)
463class ServerMessageChannelRemoved(betterproto.Message):
464    """Notification sent when a peer deletes a channel"""
465
466    room_id: str = betterproto.string_field(1)
467    peer_id: str = betterproto.string_field(2, group="endpoint_info")
468    component_id: str = betterproto.string_field(3, group="endpoint_info")
469    channel_id: str = betterproto.string_field(4)

Notification sent when a peer deletes a channel

ServerMessageChannelRemoved( room_id: str = <object object>, peer_id: str = <object object>, component_id: str = <object object>, channel_id: str = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
channel_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):
422@dataclass(eq=False, repr=False)
423class ServerMessageTrackAdded(betterproto.Message):
424    """Notification sent when peer or component adds new track"""
425
426    room_id: str = betterproto.string_field(1)
427    peer_id: str = betterproto.string_field(2, group="endpoint_info")
428    component_id: str = betterproto.string_field(3, group="endpoint_info")
429    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: 'notifications.Track' = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
track: 'notifications.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):
442@dataclass(eq=False, repr=False)
443class ServerMessageTrackMetadataUpdated(betterproto.Message):
444    """Notification sent when metadata of a multimedia track is updated"""
445
446    room_id: str = betterproto.string_field(1)
447    peer_id: str = betterproto.string_field(2, group="endpoint_info")
448    component_id: str = betterproto.string_field(3, group="endpoint_info")
449    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: 'notifications.Track' = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
track: 'notifications.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):
432@dataclass(eq=False, repr=False)
433class ServerMessageTrackRemoved(betterproto.Message):
434    """Notification sent when a track is removed"""
435
436    room_id: str = betterproto.string_field(1)
437    peer_id: str = betterproto.string_field(2, group="endpoint_info")
438    component_id: str = betterproto.string_field(3, group="endpoint_info")
439    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: 'notifications.Track' = <object object>)
room_id: str = <object object>
peer_id: str = <object object>
component_id: str = <object object>
track: 'notifications.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):
525@dataclass(eq=False, repr=False)
526class ServerMessageViewerConnected(betterproto.Message):
527    """Notification sent when viewer successfully connects"""
528
529    stream_id: str = betterproto.string_field(1)
530    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):
533@dataclass(eq=False, repr=False)
534class ServerMessageViewerDisconnected(betterproto.Message):
535    """Notification sent when viewer disconnects"""
536
537    stream_id: str = betterproto.string_field(1)
538    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):
18class ServerMessagePeerType(betterproto.Enum):
19    PEER_TYPE_UNSPECIFIED = 0
20    PEER_TYPE_WEBRTC = 1
21    PEER_TYPE_AGENT = 2
22    PEER_TYPE_VAPI = 3

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>
PEER_TYPE_VAPI = <ServerMessagePeerType.PEER_TYPE_VAPI: 3>
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