Go Remote Server Side Events - Multiple SSE Server, which allows sending messages through RPC. Позволяет отправлять сообщения веб-приложенияем, основанным на микросервисной архитектуре.
Данный пакет основан на примере SSE сервера ismasan/sse.go и описания пакета net/rpc
-
Создаём
server.go. В нём определяем серверы SSE в массиве объектов SSE.SSEServerSettings. Для каждого сервера нужно указать имя и порт. Также нужно указать адрес сервера RPC и его порт. Адрес сервера RPC будет использоваться как адрес для каждого сервера SSE. server.gopackage main func main() { //Массив настроек для каждого сервера SSE settings := []SSE.SSEServerSettings{{AppName: "SSE1", Port: 3001}, {AppName: "SSE2", Port: 3002}} //Старт всех серверов SSE и сервера RPC GoRSSE.StartServer("localhost", 3000, settings) } -
Вызываем метод GoRSSE.SendMsg("адрес_RPC:порт_RPC", "Имя_сервера_SSE", "сообщение"). Данный метод нужно вызывать на серверной стороне веб-приложения, чтобы отправить сообщение нужным клиентам.
GoRSSE.SendMsg("localhost:3000", "SSE1", "test message for SSE1") -
На стороне клиента в
JavaScriptсоздаём объектEventSourceс указанием необходимого сервера SSE и определяем методы для перехвата событий EventSourcelet eventSourse = new EventSource("http://localhost:3001"); eventSourse.onmessage = (e)=>{ console.log(e.data); } -
После запуска сервера из пунта 1 при вызове метода из пункта 2 на всех клиентах, подключенных к localhost:3001 в консоли появится сообщение
test message for SSE1