diff --git a/.editorconfig b/.editorconfig index 122b31f..4110146 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,6 +6,10 @@ end_of_line = lf indent_style = space indent_size = 2 +[*.go] +indent_style = tab +indent_size = 2 + [*.nix] indent_style = space indent_size = 2 diff --git a/app/lib/prymn_web/channels/agent_channel.ex b/app/lib/prymn_web/channels/agent_channel.ex index 08c4a54..c4b9c80 100644 --- a/app/lib/prymn_web/channels/agent_channel.ex +++ b/app/lib/prymn_web/channels/agent_channel.ex @@ -9,15 +9,21 @@ defmodule PrymnWeb.AgentChannel do {:ok, socket} end - # Channels can be used in a request/response fashion - # by sending replies to requests from the client @impl true - def handle_in("ping", payload, socket) do - {:reply, {:ok, payload}, socket} - end - - def handle_in("binary", {:binary, data}, socket) do - dbg(data) + def handle_in(event, _payload, socket) do + dbg(event) {:noreply, socket} end + + # Channels can be used in a request/response fashion + # by sending replies to requests from the client + # @impl true + # def handle_in("ping", payload, socket) do + # {:reply, {:ok, payload}, socket} + # end + + # def handle_in("binary", {:binary, data}, socket) do + # dbg(data) + # {:noreply, socket} + # end end diff --git a/flake.nix b/flake.nix index ff35c7d..6818b3d 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,7 @@ pkgs.elixir pkgs.elixir-ls pkgs.rustToolchain - pkgs.natscli + pkgs.go ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ pkgs.inotify-tools ]; services.postgres = { @@ -52,8 +52,6 @@ initialScript = "CREATE USER postgres SUPERUSER;"; }; - processes.nats-server.exec = "${pkgs.nats-server}/bin/nats-server -c ./agent/server.conf"; - enterShell = '' echo happy deving ''; diff --git a/goagent/cmd/agent/main.go b/goagent/cmd/agent/main.go new file mode 100644 index 0000000..787ffbf --- /dev/null +++ b/goagent/cmd/agent/main.go @@ -0,0 +1,14 @@ +package main + +import ( + "fmt" + + "git.nikos.gg/prymn/prymn/goagent/pkg/gophx" +) + +func main() { + err := gophx.Connect() + if err != nil { + fmt.Println(err) + } +} diff --git a/goagent/go.mod b/goagent/go.mod new file mode 100644 index 0000000..8f0819f --- /dev/null +++ b/goagent/go.mod @@ -0,0 +1,5 @@ +module git.nikos.gg/prymn/prymn/goagent + +go 1.21.5 + +require nhooyr.io/websocket v1.8.10 // indirect diff --git a/goagent/go.sum b/goagent/go.sum new file mode 100644 index 0000000..410c8fa --- /dev/null +++ b/goagent/go.sum @@ -0,0 +1,2 @@ +nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= +nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= diff --git a/goagent/pkg/gophx/channel.go b/goagent/pkg/gophx/channel.go new file mode 100644 index 0000000..12572c4 --- /dev/null +++ b/goagent/pkg/gophx/channel.go @@ -0,0 +1,22 @@ +package gophx + +import ( + "context" + "time" + + "nhooyr.io/websocket" +) + +func Connect() error { + ctx, cancel := context.WithTimeout(context.Background(), time.Minute) + defer cancel() + + c, _, err := websocket.Dial(ctx, "ws://localhost:4000/agent/websocket?vsn=2.0.0", nil) + if err != nil { + return err + } + + c.Ping(ctx) + + return nil +}