Iryna Bolbat 2 年 前
コミット
86c3df529d

+ 30 - 0
work in class/socketchat/.gitignore

@@ -0,0 +1,30 @@
+# ---> Node
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
+node_modules
+

+ 8 - 0
work in class/socketchat/README.md

@@ -0,0 +1,8 @@
+Для работы чата:
+
+- `git clone http://gitlab.a-level.com.ua/gitgod/socketchat`
+- установите [nodejs 8+](https://nodejs.org/uk/)
+- зайдите в папку с проектом (`cd`)
+- `npm install` для установки всех нужных библиотек. Они **уже** прописаны в файле `package.json` и `package-lock.json`. `npm` прочитает эти файлы и установит все как надо.
+- `node index.js` для запуска сервера
+- [дом родной, a/я 4000](http://localhost:4000) для захода на сервер (загрузки `index.html`)

+ 28 - 0
work in class/socketchat/index.html

@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+    <head>
+        <title>
+            Static File Index.HTML
+        </title>
+        <script src='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js'></script>
+    </head>
+    <body>
+        <div id='formContainer'>
+            <input id="nick" placeholder="nick" value="nick">
+            <input id="message" placeholder="text" value="msg">
+            <button id="btn">Send</button>
+        </div>
+        <script>
+            const socket = io()
+            socket.on('msg', msg => {
+                let p = document.createElement('p');
+                p.innerHTML = `${msg.nick} : ${msg.message}`; 
+                document.body.appendChild(p);
+            });
+
+            btn.onclick = () => {
+                socket.emit('msg', {nick: nick.value, message: message.value});
+            } ;
+        </script>
+    </body>
+</html>

+ 29 - 0
work in class/socketchat/index.js

@@ -0,0 +1,29 @@
+var app = require('express')();
+var http = require('http').Server(app);
+var io = require('socket.io')(http);
+const cors = require('cors')
+
+app.use(cors())
+
+app.get('/', function(req, res){
+  res.sendFile(__dirname + '/index.html');
+});
+
+io.on('connection', function(socket){
+  console.log('an user connected with id', socket.id);
+  socket.on('msg', function(msg){
+      if (msg && msg.message && msg.nick){
+          io.emit('msg', msg)
+      }
+      else {
+          console.log('WRONG MESSAGE', msg)
+      }
+  })
+  socket.on('disconnect', function(){
+    console.log('user disconnected '+ socket.id);
+  });
+});
+
+http.listen(4000, function(){
+  console.log('listening on *:4000');
+});

ファイルの差分が大きいため隠しています
+ 1210 - 0
work in class/socketchat/package-lock.json


+ 18 - 0
work in class/socketchat/package.json

@@ -0,0 +1,18 @@
+{
+  "name": "chatback",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "cors": "^2.8.5",
+    "express": "^4.16.4",
+    "package-lock.json": "^1.0.0",
+    "package.json": "^2.0.1",
+    "socket.io": "^2.2.0"
+  }
+}