From eef098a54080aad70762d39bf61b4f67a1c0a871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Garc=C3=ADa?= Date: Wed, 10 Apr 2019 20:23:13 +0100 Subject: [PATCH] Redis (#1) * Set and getAll users * Redis integration and compose * User redis managment * Docker compose config for scalling * Get rooms * Readme * Readme --- .env | 0 Dockerfile | 6 +- README.md | 46 ++++- docker-compose.yml | 37 +++- package-lock.json | 336 +++++++++++++++++++++++++++++++- package.json | 2 + server/chat_namespace/events.js | 133 +++++++------ server/chat_namespace/index.js | 4 +- server/config/index.js | 4 +- server/index.js | 8 +- server/redis/index.js | 93 +++++++++ server/routes/room.js | 4 +- src/assets/scaling.png | Bin 0 -> 141134 bytes src/main.js | 12 +- src/store.js | 9 +- src/utils/config.js | 1 + src/views/Chat.vue | 3 +- src/views/Home.vue | 22 ++- 18 files changed, 632 insertions(+), 88 deletions(-) create mode 100644 .env create mode 100644 server/redis/index.js create mode 100644 src/assets/scaling.png create mode 100644 src/utils/config.js diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/Dockerfile b/Dockerfile index d0642b9..5851d4c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,10 @@ COPY package.json /videochat/ RUN npm install COPY ./ /videochat -RUN npm run build + +ARG VUE_APP_SOCKET_HOST=NOT_SET +ARG VUE_APP_SOCKET_PORT=NOT_SET + +RUN export VUE_APP_SOCKET_HOST=${VUE_APP_SOCKET_HOST} VUE_APP_SOCKET_PORT=${VUE_APP_SOCKET_PORT} && npm run build CMD ["npm", "run", "run:server"] \ No newline at end of file diff --git a/README.md b/README.md index acf707c..632a826 100644 --- a/README.md +++ b/README.md @@ -1 +1,45 @@ -# video-chat \ No newline at end of file +# video-chat +> Video chat application using [VueJS](https://vuejs.org), [Vuex](https://vuex.vuejs.org), [WebRTC](https://webrtc.org/start/), [SocketIO](https://socket.io), NodeJS and [Redis](https://github.com/NodeRedis/node_redis) + +## Quick start +First of all, you need to install and run the redis in your PC. Here there is an [article](https://medium.com/@petehouston/install-and-config-redis-on-mac-os-x-via-homebrew-eb8df9a4f298) for Mac OS X. Once Redis is up and running: + +```bash +# Clone the repo +git clone https://github.com/adrigardi90/video-chat + +# Change into the repo directory +cd video-chat + +# install +npm install + +# Start the FE in dev mode +npm run serve + +# Start the server +npm run run:server + +``` +Then visit http://localhost:8080 in your browser + +## Horizontal scaling +To test the horizontal scaling we need to run two different instances. Each one will run a nodeJS process serving the FE and +exposing the API + +

+ scaling +

+ + +```bash +# Build the images +docker-compose build + +# Create and run the two instances +docker-compose up + +``` + +Then you'll find on http://localhost:3000 and http://localhost:3001 both FE applications, each one with a different socket connection + diff --git a/docker-compose.yml b/docker-compose.yml index d3f5461..cba6b54 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,53 @@ -version: '2' +version: '3' services: + redis: + image: redis:4.0.5-alpine + networks: + - video-chat + ports: + - 6379:6379 + expose: + - "6379" + restart: always + command: ["redis-server", "--appendonly", "yes"] + + # Copy 1 chat1: - build: . + build: + context: . + args: + VUE_APP_SOCKET_HOST: localhost + VUE_APP_SOCKET_PORT: 3000 ports: - 3000:3000 networks: - video-chat + depends_on: + - redis environment: PORT: 3000 + REDIS_HOST: redis + REDIS_PORT: 6379 + # Copy 2 chat2: - build: . + build: + context: . + args: + VUE_APP_SOCKET_HOST: localhost + VUE_APP_SOCKET_PORT: 3001 ports: - 3001:3001 networks: - video-chat + depends_on: + - redis environment: PORT: 3001 - + REDIS_HOST: redis + REDIS_PORT: 6379 + networks: video-chat: \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 79228c7..177784c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -832,6 +832,11 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, "@types/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz", @@ -2383,6 +2388,42 @@ "schema-utils": "^0.4.2" } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + } + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -2717,6 +2758,14 @@ "shallow-clone": "^1.0.0" } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3473,8 +3522,15 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } }, "deep-equal": { "version": "1.0.1", @@ -3781,12 +3837,22 @@ "is-obj": "^1.0.0" } }, + "double-ended-queue": { + "version": "2.1.0-0", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" + }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, "duplexify": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", @@ -4936,7 +5002,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -5748,6 +5813,37 @@ "minimatch": "~3.0.2" } }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + } + } + }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -5833,12 +5929,25 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -6092,6 +6201,11 @@ "resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz", "integrity": "sha1-huYybSnF0Dnen6xYSkVon5KfT3I=" }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -6354,6 +6468,15 @@ "ipaddr.js": "^1.5.2" } }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -6579,6 +6702,11 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -6603,6 +6731,11 @@ "path-is-inside": "^1.0.1" } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -6632,6 +6765,11 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -6707,6 +6845,15 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, "javascript-stringify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", @@ -6777,6 +6924,11 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -6845,6 +6997,14 @@ "verror": "1.10.0" } }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "requires": { + "json-buffer": "3.0.0" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -7114,6 +7274,11 @@ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -7317,6 +7482,11 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "mini-css-extract-plugin": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", @@ -7767,6 +7937,11 @@ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", "dev": true }, + "notepack.io": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.1.3.tgz", + "integrity": "sha512-AgSt+cP5XMooho1Ppn8NB3FFaVWefV+qZoZncYTUSch2GAEwlYLcIIbT5YVkMlFeNHnfwOvc4HDlbvrB5BRxXA==" + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -8042,6 +8217,11 @@ "os-tmpdir": "^1.0.0" } }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -8051,14 +8231,12 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, "p-limit": { "version": "2.1.0", @@ -8084,6 +8262,14 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", @@ -8184,6 +8370,25 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + }, + "dependencies": { + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + } + } + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", @@ -8873,6 +9078,11 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, "prettier": { "version": "1.13.7", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", @@ -8898,8 +9108,7 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { "version": "2.0.0", @@ -9006,6 +9215,16 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -9177,6 +9396,26 @@ } } }, + "redis": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", + "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", + "requires": { + "double-ended-queue": "^2.1.0-0", + "redis-commands": "^1.2.0", + "redis-parser": "^2.6.0" + } + }, + "redis-commands": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz", + "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==" + }, + "redis-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", + "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -9461,6 +9700,14 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -10193,6 +10440,33 @@ } } }, + "socket.io-redis": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/socket.io-redis/-/socket.io-redis-5.2.0.tgz", + "integrity": "sha1-j+KtlEX8UIhvtwq8dZ1nQD1Ymd8=", + "requires": { + "debug": "~2.6.8", + "notepack.io": "~2.1.2", + "redis": "~2.8.0", + "socket.io-adapter": "~1.1.0", + "uid2": "0.0.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "sockjs": { "version": "0.3.19", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", @@ -10237,6 +10511,14 @@ } } }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -10485,6 +10767,11 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -10825,6 +11112,11 @@ "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", "dev": true }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", @@ -11031,6 +11323,11 @@ } } }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -11265,6 +11562,19 @@ "requires-port": "^1.0.0" } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -11428,6 +11738,14 @@ "resolved": "https://registry.npmjs.org/vue-material/-/vue-material-1.0.0-beta-10.2.tgz", "integrity": "sha512-DXOUXm6M8zbeJ6LPvP1h/0EhXmCkxNGz2dM/0q4w+lsT9uTaos+YDrwQvJBJcxil3fEw6oHCfhG/peWks+8v7Q==" }, + "vue-resource": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/vue-resource/-/vue-resource-1.5.1.tgz", + "integrity": "sha512-o6V4wNgeqP+9v9b2bPXrr20CGNQPEXjpbUWdZWq9GJhqVeAGcYoeTtn/D4q059ZiyN0DIrDv/ADrQUmlUQcsmg==", + "requires": { + "got": "^8.0.3" + } + }, "vue-router": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.2.tgz", diff --git a/package.json b/package.json index 0305cca..3fb737e 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,11 @@ "path": "^0.12.7", "socket.io": "^2.2.0", "socket.io-client": "^2.2.0", + "socket.io-redis": "^5.2.0", "vue": "^2.5.21", "vue-loading-spinner": "^1.0.11", "vue-material": "^1.0.0-beta-10.2", + "vue-resource": "^1.5.1", "vue-router": "^3.0.1", "vue-socket.io": "^3.0.5", "vuex": "^3.0.1" diff --git a/server/chat_namespace/events.js b/server/chat_namespace/events.js index 23d8350..b2a9a97 100644 --- a/server/chat_namespace/events.js +++ b/server/chat_namespace/events.js @@ -1,12 +1,5 @@ -const users = { - general: [ - - ], - sports: [ - - ] -}; +const ChatRedis = require('../redis') const joinRoom = (socket, namespace) => ({ username, room }) => { console.log(`user ${username} wants to join the room ${room}`); @@ -15,11 +8,15 @@ const joinRoom = (socket, namespace) => ({ username, room }) => { socket.join(room, () => { console.log(`user ${username} joined the room ${room}`); - // push user for the suitable ROOM!!! - users[room].push({ username: username, privateChat: false }) + // add user for the suitable ROOM + ChatRedis.addUser(room, socket.id, { username: username, privateChat: false }) + + ChatRedis.getUsers(room).then(users => { + if (users === null) return - // Notify all the users in the same room - namespace.sockets.in(room).emit('newUser', users[room]); + // Notify all the users in the same room + namespace.sockets.in(room).emit('newUser', users); + }) }); } @@ -37,12 +34,19 @@ const leaveRoom = (socket, namespace) => ({ room, username }) => { socket.leave(room, () => { console.log(`user ${username} left the room ${room}`); - let usersRoom = users[room] - // delete user from the suitable array - usersRoom = usersRoom.filter((user) => (user.username !== username)) - // Notify all the users in the same room - namespace.sockets.in(room).emit('newUser', usersRoom); + ChatRedis.delUser(room, socket.id) + .then(data => { + if (data === null) return null + return ChatRedis.getUsers(room); + }) + .then(users => { + if (users === null) return + + // Notify all the users in the same room + namespace.sockets.in(room).emit('newUser', users); + }) + }) } @@ -54,33 +58,43 @@ const joinPrivateRoom = (socket, namespace) => ({ username, room, to }) => { if (room !== null) { - let usersRoom = users[room]; - let userToTalk = usersRoom.find(user => user.username === to) - - // If he is already talking - if (userToTalk.privateChat) { - - namespace.to(to).emit('leavePrivateRoom', { - to, - privateMessage: `${to} is already talking`, - from: username, - room - }) - - socket.leave(to, () => { - console.log(`user ${username} force to left the room ${to}`); - }) + ChatRedis.getUser(room, socket.id) + .then(user => { + + if (user === null) return null + + // If he is already talking + if (user.privateChat) { + + namespace.to(to).emit('leavePrivateRoom', { + to, + privateMessage: `${to} is already talking`, + from: username, + room + }) - return; - } + socket.leave(to, () => { + console.log(`user ${username} force to left the room ${to}`); + }) - userToTalk.privateChat = true + return null; + } - // Notify the user to talk with (in the same main room) - namespace.sockets.in(room).emit('privateChat', { - username, - to - }); + return ChatRedis.setUser(room, socket.id, { + ...user, + privateChat: true + }) + }) + .then(res => { + if (res === null) return + + // Notify the user to talk with (in the same main room) + namespace.sockets.in(room).emit('privateChat', { + username, + to + }); + + }) } }); } @@ -88,20 +102,29 @@ const joinPrivateRoom = (socket, namespace) => ({ username, room, to }) => { const leavePrivateRoom = (socket, namespace) => ({ room, from, to }) => { console.log(`user ${from} wants to leave the private chat with ${to}`); - let usersRoom = users[room]; - let userToTalk = usersRoom.find(user => user.username === to) - - userToTalk.privateChat = false - - namespace.to(to).emit('leavePrivateRoom', { - to, - privateMessage: `${to} has closed the chat`, - from - }) - - socket.leave(to, () => { - console.log(`user ${from} left the private chat with ${to}`); - }) + ChatRedis.getUser(room, socket.id) + .then(user => { + if (user === null) return + + return ChatRedis.setUser(room, socket.id, { + ...user, + privateChat: false + }) + }) + .then(res => { + if (res === null) return + + namespace.to(to).emit('leavePrivateRoom', { + to, + privateMessage: `${to} has closed the chat`, + from + }) + + socket.leave(to, () => { + console.log(`user ${from} left the private chat with ${to}`); + }) + + }) } const privateMessage = (namespace) => ({ privateMessage, to, from, room }) => { diff --git a/server/chat_namespace/index.js b/server/chat_namespace/index.js index fc116ec..d62b03b 100644 --- a/server/chat_namespace/index.js +++ b/server/chat_namespace/index.js @@ -1,5 +1,5 @@ -const config = require('./../config') const events = require('./events.js') +const config = require('./../config') // Socket namespace let namespace; @@ -7,6 +7,8 @@ let namespace; // When connecting const onConnection = (socket) => { + console.log(`Socket connected to port ${config.PORT}`) + // Listening for joining a room socket.on('joinRoom', events.joinRoom(socket, namespace)); diff --git a/server/config/index.js b/server/config/index.js index eb59159..c6517c9 100644 --- a/server/config/index.js +++ b/server/config/index.js @@ -1,7 +1,9 @@ const CONFIG = { PORT: process.env.PORT || 3000, - CHAT_NAMESPACE: '/chat' + CHAT_NAMESPACE: '/chat', + REDIS_HOST: process.env.REDIS_HOST || 'localhost', + REDIS_PORT: process.env.REDIS_PORT || 6379 } module.exports = CONFIG \ No newline at end of file diff --git a/server/index.js b/server/index.js index e7fc75d..59e0f82 100644 --- a/server/index.js +++ b/server/index.js @@ -1,5 +1,7 @@ -const app = require('./app') const http = require('http'); +const redis = require('socket.io-redis'); + +const app = require('./app') const config = require('./config') // Server @@ -8,7 +10,9 @@ const server = http.createServer(app); // Atach server to the socket app.io.attach(server) +// Using the adapter to pass event between nodes +app.io.adapter(redis({ host: config.REDIS_HOST, port: config.REDIS_PORT })); + server.listen(config.PORT, () => { console.log(`Server Listening on port ${config.PORT}`) }); - diff --git a/server/redis/index.js b/server/redis/index.js new file mode 100644 index 0000000..e9472db --- /dev/null +++ b/server/redis/index.js @@ -0,0 +1,93 @@ +const redis = require('redis') +const bluebird = require('bluebird') + +const config = require('./../config/') + +// Using promises +bluebird.promisifyAll(redis); + +function ChatRedis() { + this.client = redis.createClient({ + host: config.REDIS_HOST + }); +} + +/** + * Add user with hash + * @param {} room + * @param {} socketId + * @param {} userObject + */ +ChatRedis.prototype.addUser = function (room, socketId, userObject) { + this.client.hsetAsync(room, socketId, JSON.stringify(userObject)).then( + () => console.debug('addUser', userObject.username + 'added to the room ' + room), + err => console.log('addUser', err) + ); +} + +/** + * Get all users by room + * @param {} room + */ +ChatRedis.prototype.getUsers = function (room) { + return this.client.hgetallAsync(room).then(users => { + const userList = [] + + for (let user in users) { + userList.push(JSON.parse(users[user])) + } + + return userList + }, error => { + console.log('getUsers ', error) + return null + }) +} + +/** + * Deleter a user in a room with socketId + * @param {} room + * @param {} socketId + */ +ChatRedis.prototype.delUser = function(room, socketId){ + return this.client.hdelAsync(room, socketId).then( + res => (res), + err => { + console.log('delUser ', err) + return null + } + ) +} + +/** + * Get user by room and socketId + * @param {} room + * @param {} socketId + */ +ChatRedis.prototype.getUser = function(room, socketId){ + return this.client.hgetAsync(room, socketId).then( + res => JSON.parse(res), + err => { + console.log('getUser ', err) + return null + } + ) +} + +/** + * Set user + * @param {} room + * @param {} socketId + * @param {} newValue + */ +ChatRedis.prototype.setUser = function(room, socketId, newValue){ + return this.client.hsetAsync(room, socketId, JSON.stringify(newValue)).then( + res => res, + err => { + console.log('setUser', err) + return null + } + ) +} + +module.exports = new ChatRedis() diff --git a/server/routes/room.js b/server/routes/room.js index 09d7e1d..bfd2442 100644 --- a/server/routes/room.js +++ b/server/routes/room.js @@ -17,8 +17,8 @@ const rooms = [ ] // route for get rooms -roomRouter.get('/', () => { - console.log('ok') +roomRouter.get('/', (req,res) => { + res.send(rooms) }) module.exports = roomRouter \ No newline at end of file diff --git a/src/assets/scaling.png b/src/assets/scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..9db2e2c866bd41ca7510052e6c1df3e684e2787c GIT binary patch literal 141134 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
RSKeRU9&Lv?-c4K`NlcQ| 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 literal 0 HcmV?d00001 diff --git a/src/main.js b/src/main.js index 231c55a..9863cbb 100644 --- a/src/main.js +++ b/src/main.js @@ -3,18 +3,22 @@ import App from './App.vue' import router from './router' import store from './store' import VueSocketIO from 'vue-socket.io' +import VueResource from 'vue-resource'; import './styles/app.scss' +import { url } from './utils/config' // Socket config Vue.use(new VueSocketIO({ debug: true, - connection: 'http://localhost:3000', + connection: url, vuex: { - store, - actionPrefix: 'SOCKET_', - mutationPrefix: 'SOCKET_' + store, + actionPrefix: 'SOCKET_', + mutationPrefix: 'SOCKET_' } })) +// Vue resource for http +Vue.use(VueResource) Vue.config.productionTip = false diff --git a/src/store.js b/src/store.js index bd8ad27..738e777 100644 --- a/src/store.js +++ b/src/store.js @@ -6,7 +6,8 @@ Vue.use(Vuex) export default new Vuex.Store({ state: { room: undefined, - username: undefined + username: undefined, + rooms: [] }, mutations: { joinRoom(state, { room, username }) { @@ -15,6 +16,9 @@ export default new Vuex.Store({ }, changeRoom(state, room) { state.room = room + }, + setRooms(state, rooms) { + state.rooms = rooms } }, actions: { @@ -23,6 +27,9 @@ export default new Vuex.Store({ }, changeRoom({ commit }, room) { commit('changeRoom', room) + }, + setRooms({ commit }, rooms) { + commit('setRooms', rooms) } } }) diff --git a/src/utils/config.js b/src/utils/config.js new file mode 100644 index 0000000..1cc7c90 --- /dev/null +++ b/src/utils/config.js @@ -0,0 +1 @@ +export const url = `${process.env.VUE_APP_SOCKET_HOST || 'localhost'}:${process.env.VUE_APP_SOCKET_PORT || '3000'}` \ No newline at end of file diff --git a/src/views/Chat.vue b/src/views/Chat.vue index 14e2f1a..82faafa 100644 --- a/src/views/Chat.vue +++ b/src/views/Chat.vue @@ -4,8 +4,7 @@ - General - Sports + {{room.name}} diff --git a/src/views/Home.vue b/src/views/Home.vue index 04062b3..871a2fd 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -10,8 +10,7 @@ - General - Sports + {{room.name}}
@@ -23,22 +22,35 @@