Skip to content

Commit d9f2034

Browse files
committed
added listener
1 parent b681350 commit d9f2034

File tree

4 files changed

+122
-3
lines changed

4 files changed

+122
-3
lines changed

cmd/go-postgres-sockets/main.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ package main
1212

1313
import (
1414
"github.com/bebo-dot-dev/go-postgres-sockets/server/api"
15+
"github.com/bebo-dot-dev/go-postgres-sockets/server/database"
1516
"github.com/gorilla/handlers"
1617
"log"
1718
"net/http"
@@ -20,13 +21,17 @@ import (
2021
func main() {
2122
log.Printf("Server started")
2223

23-
service := api.NewNotificationsApiService()
24+
listener := database.NewPostgresDbListener()
25+
listener.Listen()
26+
27+
service := api.NewNotificationsApiService()
2428
controller := api.NewNotificationsApiController(service)
2529

2630
router := api.NewRouter(controller)
31+
router.PathPrefix("/").Handler(http.FileServer(http.Dir("./cmd/go-postgres-sockets/static/")))
2732

2833
corsOrigins := handlers.AllowedOrigins([]string{"https://editor.swagger.io"})
2934
corsHeaders := handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"})
3035
corsMethods := handlers.AllowedMethods([]string{"GET", "POST", "PUT", "HEAD", "OPTIONS"})
3136
log.Fatal(http.ListenAndServe(":8080", handlers.CORS(corsOrigins, corsHeaders, corsMethods)(router)))
32-
}
37+
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<title>Postgres DB Notifications</title>
5+
<script type="text/javascript">
6+
window.onload = function () {
7+
var conn;
8+
var msg = document.getElementById("msg");
9+
var log = document.getElementById("log");
10+
11+
function appendLog(item) {
12+
var doScroll = log.scrollTop > log.scrollHeight - log.clientHeight - 1;
13+
log.appendChild(item);
14+
if (doScroll) {
15+
log.scrollTop = log.scrollHeight - log.clientHeight;
16+
}
17+
}
18+
19+
document.getElementById("form").onsubmit = function () {
20+
var payload = {};
21+
payload.notificationType = parseInt($("#form select").val());
22+
payload.notificationText = $("#form input[type=text]").val();
23+
$.ajax({
24+
url : '/addNotification',
25+
dataType : 'json',
26+
contentType: "application/json",
27+
timeout : 2000,
28+
data: JSON.stringify(payload),
29+
method : 'PUT'
30+
}).fail(function(jqXHR, textStatus, errorThrown) {
31+
console.log('addNotification ajax call failure', jqXHR, textStatus, errorThrown);
32+
});
33+
return false;
34+
};
35+
36+
if (window["WebSocket"]) {
37+
conn = new WebSocket("ws://" + document.location.host + "/ws");
38+
conn.onclose = function (evt) {
39+
var item = document.createElement("div");
40+
item.innerHTML = "<b>socket closed</b>";
41+
appendLog(item);
42+
};
43+
conn.onmessage = function (evt) {
44+
var messages = evt.data.split('\n');
45+
for (var i = 0; i < messages.length; i++) {
46+
var item = document.createElement("div");
47+
item.innerText = messages[i];
48+
appendLog(item);
49+
}
50+
};
51+
} else {
52+
var item = document.createElement("div");
53+
item.innerHTML = "<b>Your browser does not support WebSockets.</b>";
54+
appendLog(item);
55+
}
56+
};
57+
</script>
58+
<style>
59+
html {
60+
overflow: hidden;
61+
}
62+
63+
body {
64+
overflow: hidden;
65+
padding: 0;
66+
margin: 0;
67+
width: 100%;
68+
height: 100%;
69+
background: gray;
70+
}
71+
72+
#log {
73+
background: white;
74+
margin: 0;
75+
padding: 0.5em 0.5em 0.5em 0.5em;
76+
position: absolute;
77+
top: 0.5em;
78+
left: 0.5em;
79+
right: 0.5em;
80+
bottom: 3em;
81+
overflow: auto;
82+
}
83+
84+
#form {
85+
padding: 0 0.5em 0 0.5em;
86+
margin: 0;
87+
position: absolute;
88+
bottom: 1em;
89+
left: 0px;
90+
width: 100%;
91+
overflow: hidden;
92+
}
93+
94+
</style>
95+
</head>
96+
<body>
97+
<div id="log"></div>
98+
<form id="form">
99+
<select>
100+
<option value="0">None</option>
101+
<option value="1" selected>Email</option>
102+
<option value="2">SMS</option>
103+
<option value="3">Slack</option>
104+
</select>
105+
<input type="text" id="msg" size="64" autofocus />
106+
<input type="submit" value="New DB Notification" />
107+
</form>
108+
</body>
109+
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
110+
</html>

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ module github.com/bebo-dot-dev/go-postgres-sockets
33
go 1.16
44

55
require (
6-
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731210406-9d228ec052f3
6+
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731215509-b681350459bc
77
github.com/gorilla/handlers v1.5.1
88
)

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731205017-be6d125
22
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731205017-be6d1255372a/go.mod h1:EDiz/1U4PJBnGV0L24ksnxeBKLo0CJZyH2mexZE1tMs=
33
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731210406-9d228ec052f3 h1:TMAGft4N3Gns1MCm4YQGHwSzkFx6l9DiFtfKTw1Z+gE=
44
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731210406-9d228ec052f3/go.mod h1:EDiz/1U4PJBnGV0L24ksnxeBKLo0CJZyH2mexZE1tMs=
5+
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731214855-0ea14f8f9c02 h1:WYGPq6oKRoAkvdTjv3ee/nRkwIxFakpVeD/oG/tdQQY=
6+
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731214855-0ea14f8f9c02/go.mod h1:EDiz/1U4PJBnGV0L24ksnxeBKLo0CJZyH2mexZE1tMs=
7+
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731215509-b681350459bc h1:3UwDG57T6XauVnFRaAKet+jMQ59y6t1iVi9YcGITzGo=
8+
github.com/bebo-dot-dev/go-postgres-sockets/server v0.0.0-20210731215509-b681350459bc/go.mod h1:EDiz/1U4PJBnGV0L24ksnxeBKLo0CJZyH2mexZE1tMs=
59
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
610
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
711
github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=

0 commit comments

Comments
 (0)