From e7b724922c36d806cc407e956290b02b3db17c70 Mon Sep 17 00:00:00 2001
From: Tomasz Mazur <47872060+AHGIJMKLKKZNPJKQR@users.noreply.github.com>
Date: Tue, 1 Jul 2025 19:25:39 +0200
Subject: [PATCH 1/2] Add livestream notifications
---
README.md | 5 ++-
doc/docs.md | 70 ++++++++++++++++++++++++++++++
fishjam/server_notifications.proto | 26 +++++++++++
3 files changed, 100 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a6b2d52..4a7a05a 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,7 @@ For detailed protobuf definitions and usage, please refer to the [documentation]
## How to add this repo as a git submodule in your own repository
Use the command below:
+
```command
git submodule add https://github.com/fishjam-cloud/protos.git`
```
@@ -16,13 +17,14 @@ git submodule add https://github.com/fishjam-cloud/protos.git`
Install [protoc-gen-doc](https://github.com/pseudomuto/protoc-gen-doc) plugin.
Use the command below:
+
```command
find fishjam/ -name "*.proto" | sort | xargs protoc --doc_out=./doc --doc_opt=markdown,docs.md
```
## Lint and formatting
-The files can be formatted using `buf`.
+The files can be formatted using `buf`.
Check out [installation page](https://buf.build/docs/installation/) for `buf`.
```
@@ -30,6 +32,7 @@ buf format -w
```
and linted
+
```
buf lint
```
diff --git a/doc/docs.md b/doc/docs.md
index 505afea..7434eca 100644
--- a/doc/docs.md
+++ b/doc/docs.md
@@ -81,12 +81,16 @@
- [ServerMessage.RoomCrashed](#fishjam-ServerMessage-RoomCrashed)
- [ServerMessage.RoomCreated](#fishjam-ServerMessage-RoomCreated)
- [ServerMessage.RoomDeleted](#fishjam-ServerMessage-RoomDeleted)
+ - [ServerMessage.StreamConnected](#fishjam-ServerMessage-StreamConnected)
+ - [ServerMessage.StreamDisconnected](#fishjam-ServerMessage-StreamDisconnected)
- [ServerMessage.SubscribeRequest](#fishjam-ServerMessage-SubscribeRequest)
- [ServerMessage.SubscribeResponse](#fishjam-ServerMessage-SubscribeResponse)
- [ServerMessage.Track](#fishjam-ServerMessage-Track)
- [ServerMessage.TrackAdded](#fishjam-ServerMessage-TrackAdded)
- [ServerMessage.TrackMetadataUpdated](#fishjam-ServerMessage-TrackMetadataUpdated)
- [ServerMessage.TrackRemoved](#fishjam-ServerMessage-TrackRemoved)
+ - [ServerMessage.ViewerConnected](#fishjam-ServerMessage-ViewerConnected)
+ - [ServerMessage.ViewerDisconnected](#fishjam-ServerMessage-ViewerDisconnected)
- [ServerMessage.EventType](#fishjam-ServerMessage-EventType)
- [ServerMessage.TrackType](#fishjam-ServerMessage-TrackType)
@@ -997,6 +1001,10 @@ Defines any type of message passed between FJ and server peer
| track_metadata_updated | [ServerMessage.TrackMetadataUpdated](#fishjam-ServerMessage-TrackMetadataUpdated) | | |
| peer_added | [ServerMessage.PeerAdded](#fishjam-ServerMessage-PeerAdded) | | |
| peer_deleted | [ServerMessage.PeerDeleted](#fishjam-ServerMessage-PeerDeleted) | | |
+| stream_connected | [ServerMessage.StreamConnected](#fishjam-ServerMessage-StreamConnected) | | |
+| stream_disconnected | [ServerMessage.StreamDisconnected](#fishjam-ServerMessage-StreamDisconnected) | | |
+| viewer_connected | [ServerMessage.ViewerConnected](#fishjam-ServerMessage-ViewerConnected) | | |
+| viewer_disconnected | [ServerMessage.ViewerConnected](#fishjam-ServerMessage-ViewerConnected) | | |
@@ -1248,6 +1256,36 @@ Notification sent when a room is deleted
+
+
+### ServerMessage.StreamConnected
+Notification sent when streamer successfully connects
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| stream_id | [string](#string) | | |
+
+
+
+
+
+
+
+
+### ServerMessage.StreamDisconnected
+Notification sent when streamer disconnects
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| stream_id | [string](#string) | | |
+
+
+
+
+
+
### ServerMessage.SubscribeRequest
@@ -1348,6 +1386,38 @@ Notification sent when a track is removed
+
+
+
+### ServerMessage.ViewerConnected
+Notification sent when viewer successfully connects
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| stream_id | [string](#string) | | |
+| viewer_id | [string](#string) | | |
+
+
+
+
+
+
+
+
+### ServerMessage.ViewerDisconnected
+Notification sent when viewer disconnects
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| stream_id | [string](#string) | | |
+| viewer_id | [string](#string) | | |
+
+
+
+
+
diff --git a/fishjam/server_notifications.proto b/fishjam/server_notifications.proto
index aabc81a..5a6d988 100644
--- a/fishjam/server_notifications.proto
+++ b/fishjam/server_notifications.proto
@@ -153,6 +153,28 @@ message ServerMessage {
Track track = 4;
}
+ // Notification sent when streamer successfully connects
+ message StreamConnected {
+ string stream_id = 1;
+ }
+
+ // Notification sent when streamer disconnects
+ message StreamDisconnected {
+ string stream_id = 1;
+ }
+
+ // Notification sent when viewer successfully connects
+ message ViewerConnected {
+ string stream_id = 1;
+ string viewer_id = 2;
+ }
+
+ // Notification sent when viewer disconnects
+ message ViewerDisconnected {
+ string stream_id = 1;
+ string viewer_id = 2;
+ }
+
oneof content {
RoomCrashed room_crashed = 1;
PeerConnected peer_connected = 2;
@@ -175,5 +197,9 @@ message ServerMessage {
TrackMetadataUpdated track_metadata_updated = 19;
PeerAdded peer_added = 20;
PeerDeleted peer_deleted = 21;
+ StreamConnected stream_connected = 22;
+ StreamDisconnected stream_disconnected = 23;
+ ViewerConnected viewer_connected = 24;
+ ViewerConnected viewer_disconnected = 25;
}
}
From ff0b956dac5b7a4cb9b799eb7441a6015b704a9f Mon Sep 17 00:00:00 2001
From: Tomasz Mazur <47872060+AHGIJMKLKKZNPJKQR@users.noreply.github.com>
Date: Tue, 1 Jul 2025 19:29:02 +0200
Subject: [PATCH 2/2] Update proto structs
---
.../lib/fishjam/server_notifications.pb.ex | 54 +++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/fishjam_protos/lib/fishjam/server_notifications.pb.ex b/fishjam_protos/lib/fishjam/server_notifications.pb.ex
index 792abfe..5c30bbb 100644
--- a/fishjam_protos/lib/fishjam/server_notifications.pb.ex
+++ b/fishjam_protos/lib/fishjam/server_notifications.pb.ex
@@ -219,6 +219,40 @@ defmodule Fishjam.ServerMessage.TrackMetadataUpdated do
field :track, 4, type: Fishjam.ServerMessage.Track
end
+defmodule Fishjam.ServerMessage.StreamConnected do
+ @moduledoc false
+
+ use Protobuf, protoc_gen_elixir_version: "0.14.1", syntax: :proto3
+
+ field :stream_id, 1, type: :string, json_name: "streamId"
+end
+
+defmodule Fishjam.ServerMessage.StreamDisconnected do
+ @moduledoc false
+
+ use Protobuf, protoc_gen_elixir_version: "0.14.1", syntax: :proto3
+
+ field :stream_id, 1, type: :string, json_name: "streamId"
+end
+
+defmodule Fishjam.ServerMessage.ViewerConnected do
+ @moduledoc false
+
+ use Protobuf, protoc_gen_elixir_version: "0.14.1", syntax: :proto3
+
+ field :stream_id, 1, type: :string, json_name: "streamId"
+ field :viewer_id, 2, type: :string, json_name: "viewerId"
+end
+
+defmodule Fishjam.ServerMessage.ViewerDisconnected do
+ @moduledoc false
+
+ use Protobuf, protoc_gen_elixir_version: "0.14.1", syntax: :proto3
+
+ field :stream_id, 1, type: :string, json_name: "streamId"
+ field :viewer_id, 2, type: :string, json_name: "viewerId"
+end
+
defmodule Fishjam.ServerMessage do
@moduledoc false
@@ -325,4 +359,24 @@ defmodule Fishjam.ServerMessage do
type: Fishjam.ServerMessage.PeerDeleted,
json_name: "peerDeleted",
oneof: 0
+
+ field :stream_connected, 22,
+ type: Fishjam.ServerMessage.StreamConnected,
+ json_name: "streamConnected",
+ oneof: 0
+
+ field :stream_disconnected, 23,
+ type: Fishjam.ServerMessage.StreamDisconnected,
+ json_name: "streamDisconnected",
+ oneof: 0
+
+ field :viewer_connected, 24,
+ type: Fishjam.ServerMessage.ViewerConnected,
+ json_name: "viewerConnected",
+ oneof: 0
+
+ field :viewer_disconnected, 25,
+ type: Fishjam.ServerMessage.ViewerConnected,
+ json_name: "viewerDisconnected",
+ oneof: 0
end