GaleneのテキストチャットをGo製ライブラリで保存

Galeneというビデオカンファレンスサーバーがあります．WebRTCのSFUを利用し，低スペックなサーバーでも動作するのでセルフホストして利用しています．
Galeneのテキストチャットの保存をするのにチャット欄をコピー&ペーストしていますが面倒ですしコピーし忘れてしまうことも．

Galene videoconference server

最近GaleneのGo製client libraryがリリースされたのでこれでチャットを保存できないか試してみました．

[Galene] ANNOUNCE: Galene client library for Go

gclient package – github.com/jech/gclient – Go Packages

jech/gclient: Client library for the Galene videoconference server

まずはsourceを貰ってきます．

$ git clone https://github.com/jech/gclient
$ cd gclient

example以下を見るとchat.goというものがあります．このまま使えそうです．

$ go build examples/chat/chat.go
$ ./chat
Usage: ./chat group
-debug
enable protocol logging
-insecure
don't check server certificates
-password password
password to use for login
-username username
username to use for login (default "chat-example")

Galeneのgroup urlを指定して実行することでテキストチャットの送受信ができました．このときのユーザ名は`chat-example`になります．

$ ./chat https://www.kagolug.org:8443/group/test/ (1)
user: hello world! (2)
user: 日本語
user: 絵文字&#x1f3a8;
hello (3)
chat-example: hello
^C
$ ./chat https://www.kagolug.org:8443/group/test/ (4)
user: hello world!
user: 日本語
user: 絵文字&#x1f3a8;
chat-example: hello

Galeneのgroup urlを指定して実行．

Galeneのテキストチャットがリアルタイムに表示される．

terminalからchatを送信．

接続し直すと過去の(期限切れになっていない)chat logも取得できる．

いい感じそうです．でもタイムスタンプも欲しいです．
ということで少し書き換えます．

$ git diff examples/chat/chat.go
diff --git a/examples/chat/chat.go b/examples/chat/chat.go
index 8c9211b..d2a637e 100644
--- a/examples/chat/chat.go
+++ b/examples/chat/chat.go
@@ -107,11 +107,11 @@ outer:
fmt.Printf("* %v %v\n",
e.Username, e.Value,
)
- } else if e.Username == "" {
- fmt.Printf("%v\n", e.Value)
+// } else if e.Username == "" {
+// fmt.Printf("%v\n", e.Value)
} else {
- fmt.Printf("%v: %v\n",
- e.Username, e.Value,
+ fmt.Printf("%v %v: %v\n",
+ e.Time, e.Username, e.Value,
)
}
case error:

$ go run examples/chat/chat.go https://www.kagolug.org:8443/group/test/
2025-06-03T05:16:04+09:00 user: hello world!
2025-06-03T05:18:12+09:00 user: 日本語
2025-06-03T05:18:33+09:00 user: 絵文字&#x1f3a8;
2025-06-03T05:18:45+09:00 chat-example: hello

いい感じそうです．今度のミーティングに使ってみようと思います．

環境

$ git config remote.origin.url
https://github.com/jech/gclient
$ git log --pretty=oneline -1
e8edc33fd3d81701c5bad61e9bdb9399cd4e5dc4 (HEAD -> master, origin/master, origin/HEAD) Initial import.
$ dpkg-query -W golang
golang:amd64 2:1.24~2
$ go version
go version go1.24.2 linux/amd64
$ lsb_release -dr
Description: Debian GNU/Linux 13 (trixie)
Release: 13
$ arch
x86_64