goch adalah server obrolan langsung yang dihosting sendiri dan ditulis dalam Go.
Ini memungkinkan Anda menjalankan perangkat lunak obrolan langsung di infrastruktur Anda sendiri.
Anda dapat membuat beberapa ruang obrolan pribadi dan publik yang dapat menampung dua atau lebih pengguna secara bersamaan.
Untuk komunikasi, ia menggunakan titik akhir RESTful, Websockets, NATS Streaming, dan Redis.
goch adalah cabang dari Gossip, dengan banyak fitur tambahan dan perbaikan.
Untuk menjalankan goch secara lokal, Anda memerlukan docker
, docker-compose
dan go
diinstal dan diatur pada jalur Anda. Setelah mengunduh/mengkloning proyek, jalankan ./up
yang mengkompilasi biner dan menjalankan docker-compose dengan goch , NATS Streaming, dan Redis. Jika tidak ada kesalahan, goch seharusnya berjalan di localhost (port 8080).
Agar server dapat berjalan, variabel env ADMIN_USERNAME
dan ADMIN_PASSWORD
harus disetel. Di repositori, masing-masing disetel ke admin
dan pass
, tetapi Anda jelas harus mengubahnya demi alasan keamanan.
Setelah server berjalan, rute berikut tersedia:
POST /admin/channels
: Membuat saluran baru. Anda harus memberikan nama unik untuk saluran (biasanya ID), dan responsnya menyertakan rahasia saluran yang nantinya akan digunakan untuk menghubungkan ke saluran. Titik akhir ini harus dipanggil di sisi server dengan kredensial admin yang diberikan. Responsnya harus disimpan agar dapat terhubung ke saluran nanti.
POST /register
: Daftarkan pengguna di suatu saluran. Untuk mendaftar saluran, UID, DisplayName, ChannelSecret, dan ChannelName perlu disediakan. Secara opsional, rahasia pengguna perlu diberikan, tetapi jika tidak, server akan membuat dan mengembalikannya.
GET /connect
: Menyambungkan ke obrolan dan mengembalikan koneksi WebSocket, bersama dengan riwayat obrolan. Saluran, UID, dan Rahasia perlu disediakan. Secara opsional, LastSeq disediakan yang akan mengembalikan riwayat obrolan hanya setelah LastSeq (cap waktu UNIX).
Rute yang tersisa hanya digunakan sebagai 'pembantu':
GET /channels/{name}?secret=$SECRET
: Mengembalikan daftar anggota dalam saluran. Nama saluran harus diberikan sebagai parameter URL dan rahasia saluran sebagai parameter kueri.
GET /admin/channels
: Mengembalikan daftar semua saluran yang tersedia.
GET /admin/channels/{name}/user/{uid}
: Mengembalikan daftar pesan yang belum dibaca pada obrolan untuk pengguna.
goch dilisensikan di bawah lisensi MIT. Periksa file LISENSI untuk detailnya.
Emir Ribic