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