Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Omar Elkadi
PStA WP2 OmarElkadi1
Commits
8ac2cc11
Commit
8ac2cc11
authored
Jun 25, 2021
by
Omar Elkadi
Browse files
set up web socket server in server.ts
parent
6ed6aa6f
Changes
4
Hide whitespace changes
Inline
Side-by-side
server/package-lock.json
View file @
8ac2cc11
...
...
@@ -26,6 +26,14 @@
"@types/node"
:
"*"
}
},
"@types/bson"
:
{
"version"
:
"4.0.3"
,
"resolved"
:
"https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz"
,
"integrity"
:
"sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw=="
,
"requires"
:
{
"@types/node"
:
"*"
}
},
"@types/connect"
:
{
"version"
:
"3.4.33"
,
"resolved"
:
"https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz"
,
...
...
@@ -66,6 +74,15 @@
"resolved"
:
"https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz"
,
"integrity"
:
"sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
},
"@types/mongodb"
:
{
"version"
:
"3.6.18"
,
"resolved"
:
"https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.18.tgz"
,
"integrity"
:
"sha512-JSVFt9p0rTfZ4EgzXmVHUB3ue00xe3CRbQho8nXfImzEDDM4O7I3po1bwbWl/EIbLENxUreZxqLOc8lvcnLVPA=="
,
"requires"
:
{
"@types/bson"
:
"*"
,
"@types/node"
:
"*"
}
},
"@types/multer"
:
{
"version"
:
"1.4.5"
,
"resolved"
:
"https://registry.npmjs.org/@types/multer/-/multer-1.4.5.tgz"
,
...
...
@@ -197,6 +214,49 @@
"resolved"
:
"https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz"
,
"integrity"
:
"sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ=="
},
"bl"
:
{
"version"
:
"2.2.1"
,
"resolved"
:
"https://registry.npmjs.org/bl/-/bl-2.2.1.tgz"
,
"integrity"
:
"sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g=="
,
"requires"
:
{
"readable-stream"
:
"^2.3.5"
,
"safe-buffer"
:
"^5.1.1"
},
"dependencies"
:
{
"isarray"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
,
"integrity"
:
"sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"readable-stream"
:
{
"version"
:
"2.3.7"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
,
"integrity"
:
"sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="
,
"requires"
:
{
"core-util-is"
:
"~1.0.0"
,
"inherits"
:
"~2.0.3"
,
"isarray"
:
"~1.0.0"
,
"process-nextick-args"
:
"~2.0.0"
,
"safe-buffer"
:
"~5.1.1"
,
"string_decoder"
:
"~1.1.1"
,
"util-deprecate"
:
"~1.0.1"
}
},
"string_decoder"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
,
"integrity"
:
"sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
,
"requires"
:
{
"safe-buffer"
:
"~5.1.0"
}
}
}
},
"bluebird"
:
{
"version"
:
"3.5.1"
,
"resolved"
:
"https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz"
,
"integrity"
:
"sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
},
"body-parser"
:
{
"version"
:
"1.19.0"
,
"resolved"
:
"https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz"
,
...
...
@@ -246,6 +306,11 @@
"fill-range"
:
"^7.0.1"
}
},
"bson"
:
{
"version"
:
"1.1.6"
,
"resolved"
:
"https://registry.npmjs.org/bson/-/bson-1.1.6.tgz"
,
"integrity"
:
"sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg=="
},
"buffer-from"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"
,
...
...
@@ -500,6 +565,11 @@
"resolved"
:
"https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz"
,
"integrity"
:
"sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
},
"denque"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/denque/-/denque-1.5.0.tgz"
,
"integrity"
:
"sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ=="
},
"depd"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
,
...
...
@@ -845,6 +915,11 @@
"resolved"
:
"https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz"
,
"integrity"
:
"sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg="
},
"kareem"
:
{
"version"
:
"2.3.2"
,
"resolved"
:
"https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz"
,
"integrity"
:
"sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ=="
},
"keyv"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz"
,
...
...
@@ -891,6 +966,12 @@
"resolved"
:
"https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
,
"integrity"
:
"sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"memory-pager"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz"
,
"integrity"
:
"sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
,
"optional"
:
true
},
"merge-descriptors"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
,
...
...
@@ -945,6 +1026,95 @@
"minimist"
:
"^1.2.5"
}
},
"mongodb"
:
{
"version"
:
"3.6.9"
,
"resolved"
:
"https://registry.npmjs.org/mongodb/-/mongodb-3.6.9.tgz"
,
"integrity"
:
"sha512-1nSCKgSunzn/CXwgOWgbPHUWOO5OfERcuOWISmqd610jn0s8BU9K4879iJVabqgpPPbA6hO7rG48eq+fGED3Mg=="
,
"requires"
:
{
"bl"
:
"^2.2.1"
,
"bson"
:
"^1.1.4"
,
"denque"
:
"^1.4.1"
,
"optional-require"
:
"^1.0.3"
,
"safe-buffer"
:
"^5.1.2"
,
"saslprep"
:
"^1.0.0"
}
},
"mongoose"
:
{
"version"
:
"5.12.14"
,
"resolved"
:
"https://registry.npmjs.org/mongoose/-/mongoose-5.12.14.tgz"
,
"integrity"
:
"sha512-1lMRY8cfGYFWHqe5DLnVgNQDyD0fEbSoWIQe9Mllt/ZtayZ5XUFQt+o5VKrB44vsT5cLNzgwEFO0NvwTwqLluQ=="
,
"requires"
:
{
"@types/mongodb"
:
"^3.5.27"
,
"bson"
:
"^1.1.4"
,
"kareem"
:
"2.3.2"
,
"mongodb"
:
"3.6.8"
,
"mongoose-legacy-pluralize"
:
"1.0.2"
,
"mpath"
:
"0.8.3"
,
"mquery"
:
"3.2.5"
,
"ms"
:
"2.1.2"
,
"regexp-clone"
:
"1.0.0"
,
"safe-buffer"
:
"5.2.1"
,
"sift"
:
"13.5.2"
,
"sliced"
:
"1.0.1"
},
"dependencies"
:
{
"mongodb"
:
{
"version"
:
"3.6.8"
,
"resolved"
:
"https://registry.npmjs.org/mongodb/-/mongodb-3.6.8.tgz"
,
"integrity"
:
"sha512-sDjJvI73WjON1vapcbyBD3Ao9/VN3TKYY8/QX9EPbs22KaCSrQ5rXo5ZZd44tWJ3wl3FlnrFZ+KyUtNH6+1ZPQ=="
,
"requires"
:
{
"bl"
:
"^2.2.1"
,
"bson"
:
"^1.1.4"
,
"denque"
:
"^1.4.1"
,
"optional-require"
:
"^1.0.3"
,
"safe-buffer"
:
"^5.1.2"
,
"saslprep"
:
"^1.0.0"
}
},
"ms"
:
{
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
,
"integrity"
:
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"safe-buffer"
:
{
"version"
:
"5.2.1"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
,
"integrity"
:
"sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
}
},
"mongoose-legacy-pluralize"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz"
,
"integrity"
:
"sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
},
"mpath"
:
{
"version"
:
"0.8.3"
,
"resolved"
:
"https://registry.npmjs.org/mpath/-/mpath-0.8.3.tgz"
,
"integrity"
:
"sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA=="
},
"mquery"
:
{
"version"
:
"3.2.5"
,
"resolved"
:
"https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz"
,
"integrity"
:
"sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A=="
,
"requires"
:
{
"bluebird"
:
"3.5.1"
,
"debug"
:
"3.1.0"
,
"regexp-clone"
:
"^1.0.0"
,
"safe-buffer"
:
"5.1.2"
,
"sliced"
:
"1.0.1"
},
"dependencies"
:
{
"debug"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-3.1.0.tgz"
,
"integrity"
:
"sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g=="
,
"requires"
:
{
"ms"
:
"2.0.0"
}
}
}
},
"ms"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
,
...
...
@@ -1041,6 +1211,11 @@
"wrappy"
:
"1"
}
},
"optional-require"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz"
,
"integrity"
:
"sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA=="
},
"p-cancelable"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz"
,
...
...
@@ -1171,6 +1346,11 @@
"picomatch"
:
"^2.2.1"
}
},
"regexp-clone"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz"
,
"integrity"
:
"sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
},
"registry-auth-token"
:
{
"version"
:
"4.2.1"
,
"resolved"
:
"https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz"
,
...
...
@@ -1205,6 +1385,15 @@
"resolved"
:
"https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
,
"integrity"
:
"sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"saslprep"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz"
,
"integrity"
:
"sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag=="
,
"optional"
:
true
,
"requires"
:
{
"sparse-bitfield"
:
"^3.0.3"
}
},
"semver"
:
{
"version"
:
"5.7.1"
,
"resolved"
:
"https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
,
...
...
@@ -1268,11 +1457,21 @@
"resolved"
:
"https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz"
,
"integrity"
:
"sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"sift"
:
{
"version"
:
"13.5.2"
,
"resolved"
:
"https://registry.npmjs.org/sift/-/sift-13.5.2.tgz"
,
"integrity"
:
"sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA=="
},
"signal-exit"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz"
,
"integrity"
:
"sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"sliced"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz"
,
"integrity"
:
"sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
},
"source-map"
:
{
"version"
:
"0.6.1"
,
"resolved"
:
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
,
...
...
@@ -1287,6 +1486,15 @@
"source-map"
:
"^0.6.0"
}
},
"sparse-bitfield"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz"
,
"integrity"
:
"sha1-/0rm5oZWBWuks+eSqzM004JzyhE="
,
"optional"
:
true
,
"requires"
:
{
"memory-pager"
:
"^1.0.2"
}
},
"statuses"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
,
...
...
server/package.json
View file @
8ac2cc11
...
...
@@ -13,11 +13,14 @@
"license"
:
"ISC"
,
"dependencies"
:
{
"@types/express"
:
"^4.17.9"
,
"@types/mongodb"
:
"^3.6.18"
,
"@types/node"
:
"^14.14.10"
,
"@types/systeminformation"
:
"^3.54.1"
,
"body-parser"
:
"^1.19.0"
,
"cors"
:
"^2.8.5"
,
"express"
:
"^4.17.1"
,
"mongodb"
:
"^3.6.9"
,
"mongoose"
:
"^5.12.14"
,
"multer"
:
"^1.4.2"
,
"nodemon"
:
"^2.0.6"
,
"systeminformation"
:
"^5.6.12"
,
...
...
server/public/index.html
View file @
8ac2cc11
<h1>
Real Time Messaging
</h1>
<pre
id=
"messages"
style=
"height: 400px; overflow: scroll"
></pre>
<input
type=
"text"
id=
"messageBox"
placeholder=
"Type your message here"
style=
"display: block; width: 100%; margin-bottom: 10px; padding: 10px;"
/>
<button
id=
"send"
title=
"Send Message!"
style=
"width: 100%; height: 30px;"
>
Send Message
</button>
<html>
<h1>
Real Time Messaging
</h1>
<pre
id=
"messages"
style=
"height: 400px; overflow: scroll"
></pre>
<input
type=
"text"
id=
"messageBox"
placeholder=
"Type your message here"
style=
"display: block; width: 100%; margin-bottom: 10px; padding: 10px;"
/>
<button
id=
"send"
title=
"Send Message!"
style=
"width: 100%; height: 30px;"
>
Send Message
</button>
</html>
<script>
(
function
()
{
(
function
()
{
const
sendBtn
=
document
.
querySelector
(
'
#send
'
);
const
messages
=
document
.
querySelector
(
'
#messages
'
);
const
messageBox
=
document
.
querySelector
(
'
#messageBox
'
);
...
...
@@ -22,6 +25,7 @@
ws
.
onerror
=
ws
.
onopen
=
ws
.
onclose
=
null
;
ws
.
close
();
}
ws
=
new
WebSocket
(
'
ws://localhost:6868
'
);
ws
.
onopen
=
()
=>
{
...
...
@@ -39,7 +43,7 @@
return
;
}
ws
.
send
(
messageBox
.
value
);
ws
.
send
(
messageBox
.
value
);
showMessage
(
messageBox
.
value
);
}
...
...
server/src/server.ts
View file @
8ac2cc11
...
...
@@ -4,7 +4,6 @@ import * as express from "express";
import
{
patientRoutes
}
from
"
./routes/patientRoutes
"
;
import
{
dataRoutes
}
from
"
./routes/dataRoutes
"
;
import
*
as
cors
from
"
cors
"
;
import
multer
=
require
(
"
multer
"
);
import
WebSocket
=
require
(
"
ws
"
);
// Express Server Typescript
...
...
@@ -19,7 +18,7 @@ class Server {
this
.
config
();
this
.
routes
();
}
// add middelwares
public
config
():
void
{
this
.
app
.
set
(
"
port
"
,
process
.
env
.
PORT
||
3000
);
// data is saved as objects in an array, objects contain timestamp and dataobject
...
...
@@ -27,7 +26,7 @@ class Server {
this
.
app
.
use
(
express
.
json
());
this
.
app
.
use
(
express
.
urlencoded
({
extended
:
false
}));
this
.
app
.
use
(
cors
())
//nesssary for allow the client side acsses the backend
this
.
app
.
use
(
express
.
static
(
'
public
'
))
;
this
.
app
.
use
(
express
.
static
(
'
public
'
))
//this.app.use(bodyParser.json());
//this.app.use(bodyParser.urlencoded({ extended: true }));
...
...
@@ -71,10 +70,11 @@ wss.on('connection', function connection(ws) {
})
})
})
// create a websocket server
wSserver
.
listen
(
port
,
function
()
{
console
.
log
(
`Server is listening on
${
port
}
!`
)
})
const
server
=
new
Server
();
server
.
start
(
server
.
serv
,
3000
);
// server.serv is httpServer, 3000 Portnumber
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment