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    ServerMessagePeerAdded,
 6    ServerMessagePeerConnected,
 7    ServerMessagePeerCrashed,
 8    ServerMessagePeerDeleted,
 9    ServerMessagePeerDisconnected,
10    ServerMessagePeerMetadataUpdated,
11    ServerMessagePeerType,
12    ServerMessageRoomCrashed,
13    ServerMessageRoomCreated,
14    ServerMessageRoomDeleted,
15    ServerMessageStreamConnected,
16    ServerMessageStreamDisconnected,
17    ServerMessageTrackAdded,
18    ServerMessageTrackMetadataUpdated,
19    ServerMessageTrackRemoved,
20    ServerMessageViewerConnected,
21    ServerMessageViewerDisconnected,
22)
23from fishjam.events._protos.fishjam.notifications import Track, TrackEncoding, TrackType
24
25__all__ = [
26    "ServerMessageRoomCreated",
27    "ServerMessageRoomDeleted",
28    "ServerMessageRoomCrashed",
29    "ServerMessagePeerAdded",
30    "ServerMessagePeerConnected",
31    "ServerMessagePeerDeleted",
32    "ServerMessagePeerDisconnected",
33    "ServerMessagePeerMetadataUpdated",
34    "ServerMessagePeerCrashed",
35    "ServerMessageStreamConnected",
36    "ServerMessageStreamDisconnected",
37    "ServerMessageTrackAdded",
38    "ServerMessageTrackMetadataUpdated",
39    "ServerMessageTrackRemoved",
40    "ServerMessageViewerConnected",
41    "ServerMessageViewerDisconnected",
42    "Track",
43    "TrackEncoding",
44    "TrackType",
45    "ServerMessagePeerType",
46]
@dataclass(eq=False, repr=False)
class ServerMessageRoomCreated(betterproto.Message):
366@dataclass(eq=False, repr=False)
367class ServerMessageRoomCreated(betterproto.Message):
368    """Notification sent when a room is created"""
369
370    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):
373@dataclass(eq=False, repr=False)
374class ServerMessageRoomDeleted(betterproto.Message):
375    """Notification sent when a room is deleted"""
376
377    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):
277@dataclass(eq=False, repr=False)
278class ServerMessageRoomCrashed(betterproto.Message):
279    """Notification sent when a room crashes"""
280
281    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):
284@dataclass(eq=False, repr=False)
285class ServerMessagePeerAdded(betterproto.Message):
286    """Notification sent when a peer is added"""
287
288    room_id: str = betterproto.string_field(1)
289    peer_id: str = betterproto.string_field(2)
290    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):
302@dataclass(eq=False, repr=False)
303class ServerMessagePeerConnected(betterproto.Message):
304    """Notification sent when a peer connects"""
305
306    room_id: str = betterproto.string_field(1)
307    peer_id: str = betterproto.string_field(2)
308    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):
293@dataclass(eq=False, repr=False)
294class ServerMessagePeerDeleted(betterproto.Message):
295    """Notification sent when a peer is removed"""
296
297    room_id: str = betterproto.string_field(1)
298    peer_id: str = betterproto.string_field(2)
299    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):
311@dataclass(eq=False, repr=False)
312class ServerMessagePeerDisconnected(betterproto.Message):
313    """Notification sent when a peer disconnects from FJ"""
314
315    room_id: str = betterproto.string_field(1)
316    peer_id: str = betterproto.string_field(2)
317    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):
404@dataclass(eq=False, repr=False)
405class ServerMessagePeerMetadataUpdated(betterproto.Message):
406    """Notification sent when peer updates its metadata"""
407
408    room_id: str = betterproto.string_field(1)
409    peer_id: str = betterproto.string_field(2)
410    metadata: str = betterproto.string_field(3)
411    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):
320@dataclass(eq=False, repr=False)
321class ServerMessagePeerCrashed(betterproto.Message):
322    """Notification sent when a peer crashes"""
323
324    room_id: str = betterproto.string_field(1)
325    peer_id: str = betterproto.string_field(2)
326    reason: str = betterproto.string_field(3)
327    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):
503@dataclass(eq=False, repr=False)
504class ServerMessageStreamConnected(betterproto.Message):
505    """Notification sent when streamer successfully connects"""
506
507    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):
510@dataclass(eq=False, repr=False)
511class ServerMessageStreamDisconnected(betterproto.Message):
512    """Notification sent when streamer disconnects"""
513
514    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):
414@dataclass(eq=False, repr=False)
415class ServerMessageTrackAdded(betterproto.Message):
416    """Notification sent when peer or component adds new track"""
417
418    room_id: str = betterproto.string_field(1)
419    peer_id: str = betterproto.string_field(2, group="endpoint_info")
420    component_id: str = betterproto.string_field(3, group="endpoint_info")
421    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):
434@dataclass(eq=False, repr=False)
435class ServerMessageTrackMetadataUpdated(betterproto.Message):
436    """Notification sent when metadata of a multimedia track is updated"""
437
438    room_id: str = betterproto.string_field(1)
439    peer_id: str = betterproto.string_field(2, group="endpoint_info")
440    component_id: str = betterproto.string_field(3, group="endpoint_info")
441    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):
424@dataclass(eq=False, repr=False)
425class ServerMessageTrackRemoved(betterproto.Message):
426    """Notification sent when a track is removed"""
427
428    room_id: str = betterproto.string_field(1)
429    peer_id: str = betterproto.string_field(2, group="endpoint_info")
430    component_id: str = betterproto.string_field(3, group="endpoint_info")
431    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):
517@dataclass(eq=False, repr=False)
518class ServerMessageViewerConnected(betterproto.Message):
519    """Notification sent when viewer successfully connects"""
520
521    stream_id: str = betterproto.string_field(1)
522    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):
525@dataclass(eq=False, repr=False)
526class ServerMessageViewerDisconnected(betterproto.Message):
527    """Notification sent when viewer disconnects"""
528
529    stream_id: str = betterproto.string_field(1)
530    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):
15class ServerMessagePeerType(betterproto.Enum):
16    PEER_TYPE_UNSPECIFIED = 0
17    PEER_TYPE_WEBRTC = 1
18    PEER_TYPE_AGENT = 2
19    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