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    ServerMessageRecordingStatusChanged,
15    ServerMessageRecordingStatusChangedStatus,
16    ServerMessageRoomCrashed,
17    ServerMessageRoomCreated,
18    ServerMessageRoomDeleted,
19    ServerMessageStreamConnected,
20    ServerMessageStreamDisconnected,
21    ServerMessageStreamerConnected,
22    ServerMessageStreamerDisconnected,
23    ServerMessageTrackAdded,
24    ServerMessageTrackMetadataUpdated,
25    ServerMessageTrackRemoved,
26    ServerMessageViewerConnected,
27    ServerMessageViewerDisconnected,
28)
29from fishjam.events._protos.fishjam.notifications import Track, TrackEncoding, TrackType
30
31__all__ = [
32    "ServerMessageRoomCreated",
33    "ServerMessageRoomDeleted",
34    "ServerMessageRoomCrashed",
35    "ServerMessagePeerAdded",
36    "ServerMessagePeerConnected",
37    "ServerMessagePeerDeleted",
38    "ServerMessagePeerDisconnected",
39    "ServerMessagePeerMetadataUpdated",
40    "ServerMessagePeerCrashed",
41    "ServerMessageRecordingStatusChanged",
42    "ServerMessageRecordingStatusChangedStatus",
43    "ServerMessageStreamConnected",
44    "ServerMessageStreamDisconnected",
45    "ServerMessageStreamerConnected",
46    "ServerMessageStreamerDisconnected",
47    "ServerMessageChannelAdded",
48    "ServerMessageChannelRemoved",
49    "ServerMessageTrackAdded",
50    "ServerMessageTrackMetadataUpdated",
51    "ServerMessageTrackRemoved",
52    "ServerMessageViewerConnected",
53    "ServerMessageViewerDisconnected",
54    "Track",
55    "TrackEncoding",
56    "TrackType",
57    "ServerMessagePeerType",
58]
@dataclass(eq=False, repr=False)
class ServerMessageRoomCreated(betterproto.Message):
385@dataclass(eq=False, repr=False)
386class ServerMessageRoomCreated(betterproto.Message):
387    """Notification sent when a room is created"""
388
389    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):
392@dataclass(eq=False, repr=False)
393class ServerMessageRoomDeleted(betterproto.Message):
394    """Notification sent when a room is deleted"""
395
396    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):
296@dataclass(eq=False, repr=False)
297class ServerMessageRoomCrashed(betterproto.Message):
298    """Notification sent when a room crashes"""
299
300    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):
303@dataclass(eq=False, repr=False)
304class ServerMessagePeerAdded(betterproto.Message):
305    """Notification sent when a peer is added"""
306
307    room_id: str = betterproto.string_field(1)
308    peer_id: str = betterproto.string_field(2)
309    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):
321@dataclass(eq=False, repr=False)
322class ServerMessagePeerConnected(betterproto.Message):
323    """Notification sent when a peer connects"""
324
325    room_id: str = betterproto.string_field(1)
326    peer_id: str = betterproto.string_field(2)
327    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):
312@dataclass(eq=False, repr=False)
313class ServerMessagePeerDeleted(betterproto.Message):
314    """Notification sent when a peer is removed"""
315
316    room_id: str = betterproto.string_field(1)
317    peer_id: str = betterproto.string_field(2)
318    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):
330@dataclass(eq=False, repr=False)
331class ServerMessagePeerDisconnected(betterproto.Message):
332    """Notification sent when a peer disconnects from FJ"""
333
334    room_id: str = betterproto.string_field(1)
335    peer_id: str = betterproto.string_field(2)
336    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):
423@dataclass(eq=False, repr=False)
424class ServerMessagePeerMetadataUpdated(betterproto.Message):
425    """Notification sent when peer updates its metadata"""
426
427    room_id: str = betterproto.string_field(1)
428    peer_id: str = betterproto.string_field(2)
429    metadata: str = betterproto.string_field(3)
430    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):
339@dataclass(eq=False, repr=False)
340class ServerMessagePeerCrashed(betterproto.Message):
341    """Notification sent when a peer crashes"""
342
343    room_id: str = betterproto.string_field(1)
344    peer_id: str = betterproto.string_field(2)
345    reason: str = betterproto.string_field(3)
346    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 ServerMessageRecordingStatusChanged(betterproto.Message):
564@dataclass(eq=False, repr=False)
565class ServerMessageRecordingStatusChanged(betterproto.Message):
566    recording_id: str = betterproto.string_field(1)
567    status: "ServerMessageRecordingStatusChangedStatus" = betterproto.enum_field(2)
568    metadata: str = betterproto.string_field(3)
ServerMessageRecordingStatusChanged( recording_id: str = <object object>, status: ServerMessageRecordingStatusChangedStatus = <object object>, metadata: str = <object object>)
recording_id: str = <object object>
status: ServerMessageRecordingStatusChangedStatus = <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 ServerMessageRecordingStatusChangedStatus(betterproto.Enum):
38class ServerMessageRecordingStatusChangedStatus(betterproto.Enum):
39    STATUS_UNSPECIFIED = 0
40    STATUS_ACTIVE = 1
41    STATUS_FINISHED = 2
42    STATUS_AVAILABLE = 3
43    STATUS_FAILED = 4

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

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
@dataclass(eq=False, repr=False)
class ServerMessageStreamConnected(betterproto.Message):
522@dataclass(eq=False, repr=False)
523class ServerMessageStreamConnected(betterproto.Message):
524    """Notification sent when streamer successfully connects"""
525
526    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):
529@dataclass(eq=False, repr=False)
530class ServerMessageStreamDisconnected(betterproto.Message):
531    """Notification sent when streamer disconnects"""
532
533    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):
552@dataclass(eq=False, repr=False)
553class ServerMessageStreamerConnected(betterproto.Message):
554    stream_id: str = betterproto.string_field(1)
555    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):
558@dataclass(eq=False, repr=False)
559class ServerMessageStreamerDisconnected(betterproto.Message):
560    stream_id: str = betterproto.string_field(1)
561    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):
463@dataclass(eq=False, repr=False)
464class ServerMessageChannelAdded(betterproto.Message):
465    """Notification sent when a peer creates a channel"""
466
467    room_id: str = betterproto.string_field(1)
468    peer_id: str = betterproto.string_field(2, group="endpoint_info")
469    component_id: str = betterproto.string_field(3, group="endpoint_info")
470    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):
473@dataclass(eq=False, repr=False)
474class ServerMessageChannelRemoved(betterproto.Message):
475    """Notification sent when a peer deletes a channel"""
476
477    room_id: str = betterproto.string_field(1)
478    peer_id: str = betterproto.string_field(2, group="endpoint_info")
479    component_id: str = betterproto.string_field(3, group="endpoint_info")
480    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):
433@dataclass(eq=False, repr=False)
434class ServerMessageTrackAdded(betterproto.Message):
435    """Notification sent when peer or component adds new track"""
436
437    room_id: str = betterproto.string_field(1)
438    peer_id: str = betterproto.string_field(2, group="endpoint_info")
439    component_id: str = betterproto.string_field(3, group="endpoint_info")
440    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):
453@dataclass(eq=False, repr=False)
454class ServerMessageTrackMetadataUpdated(betterproto.Message):
455    """Notification sent when metadata of a multimedia track is updated"""
456
457    room_id: str = betterproto.string_field(1)
458    peer_id: str = betterproto.string_field(2, group="endpoint_info")
459    component_id: str = betterproto.string_field(3, group="endpoint_info")
460    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):
443@dataclass(eq=False, repr=False)
444class ServerMessageTrackRemoved(betterproto.Message):
445    """Notification sent when a track is removed"""
446
447    room_id: str = betterproto.string_field(1)
448    peer_id: str = betterproto.string_field(2, group="endpoint_info")
449    component_id: str = betterproto.string_field(3, group="endpoint_info")
450    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):
536@dataclass(eq=False, repr=False)
537class ServerMessageViewerConnected(betterproto.Message):
538    """Notification sent when viewer successfully connects"""
539
540    stream_id: str = betterproto.string_field(1)
541    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):
544@dataclass(eq=False, repr=False)
545class ServerMessageViewerDisconnected(betterproto.Message):
546    """Notification sent when viewer disconnects"""
547
548    stream_id: str = betterproto.string_field(1)
549    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