Skip to content

Commit 6f208eb

Browse files
author
Sakif Surur
committedNov 20, 2018
added comment on server code
1 parent d4dc86d commit 6f208eb

File tree

2 files changed

+960
-2
lines changed

2 files changed

+960
-2
lines changed
 

‎package-lock.json

+949
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/server/app.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,44 @@
11
const express = require("express")
22
const http = require("http")
33
const WebSocket = require("ws")
4+
5+
// Broadcaster is a class that emit event when a new datapoint arrive
6+
// This is just an emulation of real life situation where datapoint came in randomly
47
const Broadcaster = require ("./Broadcaster")
58

69
const app = express()
710

11+
// Create own HTTP server instead of using app.listen() in order to share the same port with WS
812
const httpServer = http.createServer(app)
913

14+
// Initating all middleware for express
1015
app
1116
.set("views", `${process.cwd()}/src/server/views`)
1217
.set("view engine", "pug")
1318
.use(express.static(`${process.cwd()}/src/client`))
1419

20+
// Render index.pug from views for root URL
1521
app
1622
.get("/", (req, res) => {
1723
res.render("index")
1824
})
1925

20-
26+
// Initiate websocket server with the same server as express
2127
const wss = new WebSocket.Server({ server: httpServer })
2228

29+
// Create new Broadcaster
30+
// Maybe you can add multiple broadcaster for multiple bus using the same data to make it a little interesting
2331
const broadcaster = new Broadcaster()
2432

2533
broadcaster.start()
2634
broadcaster.on("data", (data) => {
35+
// Send data to all connected clients on websocket
2736
wss.clients.forEach((socket) => {
2837
socket.send(JSON.stringify(data))
2938
})
3039
})
3140

32-
41+
// Start listening on port 3000 for both express app and WS server
3342
httpServer.listen(3000, () => {
3443
console.log("HTTP server listening on port 3000")
3544
})

0 commit comments

Comments
 (0)
Please sign in to comment.