Huhu zusammen,
So, ich habe die Changes vom OpenSim in meinen Sim gemerged. War einiges an Arbeit, aber schlussendlich habe ich es auch geschafft. Was spannend ist, im OpenSim haben sie WebRtc beigefügt. Das WebRtc ist der Ersatz für Vivox oder Freeswitch Voice. Spannende Geschichte.
Das WebRtc besteht aus drei Teilen, ein Modul für den Region-Server, eines für den Robust-Server und ein Drittes (Siehe Hierarchie-Abbildung unten). So weit, so gut. Was macht man nun, wenn man keinen Robust hat? Umschreiben nach PHP (unser Grid läuft ja auf dem PHP Grid Server)?
Nein PHP tue ich mir nicht an! Aber das WebRtc ist ja mehr oder weniger autonom, hat mit dem andern Gedöns des Grid eigentlich nichts zu tun. Das Teil auf dem Robust ist eigentlich nur eine Schnittstelle zum janus-gateway. Okay da braucht es noch einiges mehr. Die Kommunikation sieht wie folgt aus:
Okay, mal wieder die tyische OpenSim Struktur. Ein Region Modul, welches mit dem Grid Server kommuniziert. Ein Connector Modul, welches die die RPC Anfragen vom Region Server entgegen nimmt, dann ein Service Modul das sonstige Logik enthält und als drittes der WebRtcJanusService welcher mit dem Janus-WebRtc-Gateway quasselt. Der WebRtc-Gateway ist eine externe Software die auch noch bereitgestellt werden muss, gibt es aber glücklicherweise als Docker Container in den verschiedensten Ausprägungen. Also muss ich nur noch etwas mit dem Robust Gedöns anstellen.
Also eine Architektur Entscheidung treffen. Ich hab ja noch einiges vor mit dem Grid-Server. Und das was ich vor habe ist am besten unterstützt in der Sprache "Go". Diese Sprache wurde von Google entwickelt https://de.wikipedia.org/wiki/Go_(Programmiersprache). Die Sprache wurde zwar von Google entwickelt, ist aber OpenSource, den Source Code findet man hier: https://github.com/golang/go. Go ist eigentlich die Sprache für die Cloud. Viele Cloud Services sind in Go geschrieben. Also perfekt für einen Grid Server.
Ich habe dann Claude mal gebeten mir den csharp code nach Go zu übersetzen, was er auch ohne Meckern gemacht hat. Und siehe, das ganze kann man sogar schon fehlerfrei compilieren. Ob es etwas Sinnvolles tut hab ich noch nicht getestet. Aber der Ansatz ist schon mal spannend. Und schon hatte ich ein neues Repository.
Hmm... ein weiteres Repository auf einem amerikanischen Server. Irgendwie möchte ich das nicht mehr. Habe mich auf die Suche gemacht und "Codeberg" gefunden. Das schöne ist, Codeberg ist in Deutschland und es ist ein Community-Projekt mit offener Software entwickelt und bietet all das, was ich brauche. Was fehlt sind die Vulnerability Scanner und ein Renovate-System, welches automatisch Pull Requests generiert, wenn eine abhängige NuGet die Version wechselt. Aber das ist Deluxe und im Enterprise Umfeld durchaus sinnvoll und ich gehe davon aus, dass ich so was auch mit irgendwelchen externen Services erreiche. Also rasch die Url bei den Repos geändert und voilà Aki ist auf Codeberg: https://codeberg.org/AkiraSonoda
Nächste Schritte: Dieses WebRtc zum Laufen zu kriegen.
Liebe Grüsse
Akira
So, ich habe die Changes vom OpenSim in meinen Sim gemerged. War einiges an Arbeit, aber schlussendlich habe ich es auch geschafft. Was spannend ist, im OpenSim haben sie WebRtc beigefügt. Das WebRtc ist der Ersatz für Vivox oder Freeswitch Voice. Spannende Geschichte.
Das WebRtc besteht aus drei Teilen, ein Modul für den Region-Server, eines für den Robust-Server und ein Drittes (Siehe Hierarchie-Abbildung unten). So weit, so gut. Was macht man nun, wenn man keinen Robust hat? Umschreiben nach PHP (unser Grid läuft ja auf dem PHP Grid Server)?
Nein PHP tue ich mir nicht an! Aber das WebRtc ist ja mehr oder weniger autonom, hat mit dem andern Gedöns des Grid eigentlich nichts zu tun. Das Teil auf dem Robust ist eigentlich nur eine Schnittstelle zum janus-gateway. Okay da braucht es noch einiges mehr. Die Kommunikation sieht wie folgt aus:
Code:
Viewer (WebRTC)
│ HTTP Caps (LLSD/XML)
▼
WebRtcVoiceRegionModule ← Region-Server
(ISharedRegionModule)
Caps: ProvisionVoiceAccountRequest
VoiceSignalingRequest
ChatSessionRequest
│ JSON-RPC über HTTP
▼
WebRtcVoiceServerConnector ← Robust-Server
(IServiceConnector)
Endpunkte: provision_voice_account_request
voice_signaling_request
│ ServerUtils.LoadPlugin
▼
WebRtcVoiceServiceModule ← Robust-Server (Service-Modul)
(ISharedRegionModule + IWebRtcVoiceService)
Verteilt auf spatial / non-spatial Voice-Service
│ ServerUtils.LoadPlugin
▼
WebRtcJanusService ← Janus-Implementierung
(IWebRtcVoiceService)
Kommuniziert mit Janus WebRTC Gateway
│ WebSocket / HTTP
▼
Janus WebRTC GatewayOkay, mal wieder die tyische OpenSim Struktur. Ein Region Modul, welches mit dem Grid Server kommuniziert. Ein Connector Modul, welches die die RPC Anfragen vom Region Server entgegen nimmt, dann ein Service Modul das sonstige Logik enthält und als drittes der WebRtcJanusService welcher mit dem Janus-WebRtc-Gateway quasselt. Der WebRtc-Gateway ist eine externe Software die auch noch bereitgestellt werden muss, gibt es aber glücklicherweise als Docker Container in den verschiedensten Ausprägungen. Also muss ich nur noch etwas mit dem Robust Gedöns anstellen.
Also eine Architektur Entscheidung treffen. Ich hab ja noch einiges vor mit dem Grid-Server. Und das was ich vor habe ist am besten unterstützt in der Sprache "Go". Diese Sprache wurde von Google entwickelt https://de.wikipedia.org/wiki/Go_(Programmiersprache). Die Sprache wurde zwar von Google entwickelt, ist aber OpenSource, den Source Code findet man hier: https://github.com/golang/go. Go ist eigentlich die Sprache für die Cloud. Viele Cloud Services sind in Go geschrieben. Also perfekt für einen Grid Server.
Ich habe dann Claude mal gebeten mir den csharp code nach Go zu übersetzen, was er auch ohne Meckern gemacht hat. Und siehe, das ganze kann man sogar schon fehlerfrei compilieren. Ob es etwas Sinnvolles tut hab ich noch nicht getestet. Aber der Ansatz ist schon mal spannend. Und schon hatte ich ein neues Repository.
Hmm... ein weiteres Repository auf einem amerikanischen Server. Irgendwie möchte ich das nicht mehr. Habe mich auf die Suche gemacht und "Codeberg" gefunden. Das schöne ist, Codeberg ist in Deutschland und es ist ein Community-Projekt mit offener Software entwickelt und bietet all das, was ich brauche. Was fehlt sind die Vulnerability Scanner und ein Renovate-System, welches automatisch Pull Requests generiert, wenn eine abhängige NuGet die Version wechselt. Aber das ist Deluxe und im Enterprise Umfeld durchaus sinnvoll und ich gehe davon aus, dass ich so was auch mit irgendwelchen externen Services erreiche. Also rasch die Url bei den Repos geändert und voilà Aki ist auf Codeberg: https://codeberg.org/AkiraSonoda
Nächste Schritte: Dieses WebRtc zum Laufen zu kriegen.
Liebe Grüsse
Akira


![[-]](https://www.gridtalk.de/images/collapse.png)