Showing
7 changed files
with
209 additions
and
35 deletions
server/openAPIs/papago_api.js
0 → 100644
| 1 | +const config = require('../config/config') | ||
| 2 | +const request = require('request'); | ||
| 3 | + | ||
| 4 | +const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt' | ||
| 5 | +const dPAPAGO_URL = 'https://openapi.naver.com/v1/papago/detectLangs' | ||
| 6 | +const PAPAGO_ID = process.env.PAPAGO_ID | ||
| 7 | +const PAPAGO_SECRET = process.env.PAPAGO_SECRET | ||
| 8 | + | ||
| 9 | +exports.trans = (message, lang, io, room) => { | ||
| 10 | + request.post( | ||
| 11 | + { | ||
| 12 | + url: PAPAGO_URL, | ||
| 13 | + headers: { | ||
| 14 | + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
| 15 | + 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
| 16 | + 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
| 17 | + }, | ||
| 18 | + body: `source=${lang}&target=ko&text=` + message, | ||
| 19 | + json:true | ||
| 20 | + },(error, response, body) => { | ||
| 21 | + if(!error && response.statusCode == 200) { | ||
| 22 | + var Translated = body.message.result.translatedText; | ||
| 23 | + io.to(room).emit('chat message', "trans", Translated); | ||
| 24 | + } | ||
| 25 | + }); | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | + | ||
| 29 | +exports.detect = (message,io,room) => { | ||
| 30 | + request.post( | ||
| 31 | + { | ||
| 32 | + url: dPAPAGO_URL, | ||
| 33 | + headers: { | ||
| 34 | + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
| 35 | + 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
| 36 | + 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
| 37 | + }, | ||
| 38 | + body: `query=` + message, | ||
| 39 | + json:true | ||
| 40 | + },(error, response, body) => { | ||
| 41 | + if(!error && response.statusCode == 200) { | ||
| 42 | + var lang = body.langCode; | ||
| 43 | + if(lang != 'ko'){ | ||
| 44 | + this.trans(message,lang,io,room) | ||
| 45 | + } | ||
| 46 | + } | ||
| 47 | + }); | ||
| 48 | +} |
server/openAPIs/twitch_api.js
0 → 100644
File mode changed
This diff is collapsed. Click to expand it.
| ... | @@ -10,7 +10,9 @@ | ... | @@ -10,7 +10,9 @@ |
| 10 | "license": "ISC", | 10 | "license": "ISC", |
| 11 | "dependencies": { | 11 | "dependencies": { |
| 12 | "dotenv": "^8.2.0", | 12 | "dotenv": "^8.2.0", |
| 13 | + "ejs": "^3.1.5", | ||
| 13 | "express": "^4.17.1", | 14 | "express": "^4.17.1", |
| 15 | + "request": "^2.88.2", | ||
| 14 | "socket.io": "^3.0.3" | 16 | "socket.io": "^3.0.3" |
| 15 | } | 17 | } |
| 16 | } | 18 | } | ... | ... |
| 1 | -const config = require(__dirname + '/config/config') | ||
| 2 | - | ||
| 3 | -const express = require('express'); | ||
| 4 | -const app = express(); | ||
| 5 | -const server = require('http').Server(app); | ||
| 6 | -const io = require('socket.io')(server); | ||
| 7 | -const port = process.env.SOCKET_PORT; | ||
| 8 | - | ||
| 9 | -server.listen(port, () => { console.log(`Listening on port ${port}`) }); | ||
| 10 | - | ||
| 11 | -io.on('connection', socket => { | ||
| 12 | - console.log("connected socketID : ", socket.id); | ||
| 13 | - io.to(socket.id).emit('my socket id',{socketId: socket.id}); | ||
| 14 | - | ||
| 15 | - socket.on('enter chatroom', () => { | ||
| 16 | - console.log("channel에 입장"); | ||
| 17 | - socket.broadcast.emit('receive chat', {type: "alert", chat: "누군가가 입장하였습니다.", regDate: Date.now()}); | ||
| 18 | - }) | ||
| 19 | - | ||
| 20 | - socket.on('send voice', data => { | ||
| 21 | - console.log(`${socket.id} : ${data.chat}`); | ||
| 22 | - io.emit('send voice', data); | ||
| 23 | - }) | ||
| 24 | - | ||
| 25 | - socket.on('leave chatroom', data => { | ||
| 26 | - console.log('leave chatroom ', data); | ||
| 27 | - socket.broadcast.emit('receive chat', {type: "alert", chat: "누군가가 퇴장하였습니다.", regDate: Date.now()}); | ||
| 28 | - }) | ||
| 29 | - | ||
| 30 | -}) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +const config = require('./config/config') | ||
| 2 | + | ||
| 3 | +const app = require('express')(); | ||
| 4 | +const http = require('http').Server(app); | ||
| 5 | +const io = require('socket.io')(http); | ||
| 6 | +const papago = require('./openAPIs/papago_api') | ||
| 7 | + | ||
| 8 | +app.set('view engine', 'ejs'); | ||
| 9 | +app.set('views', './views'); | ||
| 10 | + | ||
| 11 | +let room = ['streamer1', 'streamer2']; | ||
| 12 | +let a = 0; | ||
| 13 | + | ||
| 14 | +app.get('/', (req, res) => { | ||
| 15 | + res.render('chat'); | ||
| 16 | +}); | ||
| 17 | + | ||
| 18 | +app.get('/list',(req,res) => { | ||
| 19 | + res.send(room); | ||
| 20 | +}) | ||
| 21 | + | ||
| 22 | +app.post('/add',(req,res)=>{ | ||
| 23 | + room.append(req.body.streamer); | ||
| 24 | + res.send(req.body.streamer); | ||
| 25 | +}) | ||
| 26 | + | ||
| 27 | + | ||
| 28 | +io.on('connection', (socket) => { | ||
| 29 | + socket.on('disconnect', () => { | ||
| 30 | + console.log('user disconnected'); | ||
| 31 | + }); | ||
| 32 | + | ||
| 33 | + socket.on('leaveRoom', (num,name) => { | ||
| 34 | + socket.leave(room[num], () => { | ||
| 35 | + console.log('Someone leave a ' + room[num]); | ||
| 36 | + io.to(room[num]).emit('leaveRoom', num ,name); | ||
| 37 | + }); | ||
| 38 | + }); | ||
| 39 | + | ||
| 40 | + socket.on('joinRoom', (num,name) => { | ||
| 41 | + socket.join(room[num], () => { | ||
| 42 | + console.log('Someone join a ' + room[num]); | ||
| 43 | + io.to(room[num]).emit('joinRoom', num ,name); | ||
| 44 | + }); | ||
| 45 | + }); | ||
| 46 | + | ||
| 47 | + socket.on('chat message', (num,name, msg) => { | ||
| 48 | + papago.detect(msg,io,room[num]); | ||
| 49 | + io.to(room[a]).emit('chat message', name, msg); | ||
| 50 | + }); | ||
| 51 | +}); | ||
| 52 | + | ||
| 53 | + | ||
| 54 | +http.listen(process.env.SOCKET_PORT, () => { | ||
| 55 | + console.log(`Connect at ${process.env.SOCKET_PORT}`); | ||
| 56 | +}); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
server/testclient.html
deleted
100644 → 0
server/testviews/chat.ejs
0 → 100644
| 1 | +<html> | ||
| 2 | +<head> | ||
| 3 | + <style> | ||
| 4 | + * { | ||
| 5 | + margin: 0; | ||
| 6 | + padding: 0; | ||
| 7 | + box-sizing: border-box; | ||
| 8 | + } | ||
| 9 | + | ||
| 10 | + body { | ||
| 11 | + font: 13px Helvetica, Arial; | ||
| 12 | + } | ||
| 13 | + | ||
| 14 | + form { | ||
| 15 | + background: #000; | ||
| 16 | + padding: 3px; | ||
| 17 | + position: fixed; | ||
| 18 | + bottom: 0; | ||
| 19 | + width: 100%; | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + form input { | ||
| 23 | + border: 0; | ||
| 24 | + padding: 10px; | ||
| 25 | + width: 90%; | ||
| 26 | + margin-right: .5%; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + form button { | ||
| 30 | + width: 9%; | ||
| 31 | + background: rgb(130, 224, 255); | ||
| 32 | + border: none; | ||
| 33 | + padding: 10px; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + #messages { | ||
| 37 | + list-style-type: none; | ||
| 38 | + margin: 0; | ||
| 39 | + padding: 0; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + #messages li { | ||
| 43 | + padding: 5px 10px; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + #messages li:nth-child(odd) { | ||
| 47 | + background: #eee; | ||
| 48 | + } | ||
| 49 | + </style> | ||
| 50 | +</head> | ||
| 51 | +<body> | ||
| 52 | +<select> | ||
| 53 | + <option value="streamer1">streamer1</option> | ||
| 54 | + <option value="streamer2">streamer2</option> | ||
| 55 | +</select> | ||
| 56 | +<ul id="messages"></ul> | ||
| 57 | +<form action=""> | ||
| 58 | + <input id="m" autocomplete="off"/> | ||
| 59 | + <button>Send</button> | ||
| 60 | +</form> | ||
| 61 | +<script src="/socket.io/socket.io.js"></script> | ||
| 62 | +<script src="http://code.jquery.com/jquery-1.11.1.js"></script> | ||
| 63 | +<script> | ||
| 64 | + $(() => { | ||
| 65 | + const name = prompt('What your name'); | ||
| 66 | + const socket = io(); | ||
| 67 | + let room = ['streamer1', 'streamer2']; | ||
| 68 | + let num = 0; | ||
| 69 | + | ||
| 70 | + socket.emit('joinRoom', num, name); | ||
| 71 | + | ||
| 72 | + $('select').change(() => { | ||
| 73 | + socket.emit('leaveRoom', num, name); | ||
| 74 | + num++; | ||
| 75 | + num = num % 2; | ||
| 76 | + socket.emit('joinRoom', num, name); | ||
| 77 | + }); | ||
| 78 | + | ||
| 79 | + | ||
| 80 | + $('form').submit(() => { | ||
| 81 | + socket.emit('chat message', num, name, $('#m').val()); | ||
| 82 | + $('#m').val(''); | ||
| 83 | + return false; | ||
| 84 | + }); | ||
| 85 | + | ||
| 86 | + socket.on('chat message', (name, msg) => { | ||
| 87 | + $('#messages').append($('<li>').text(name + ' : ' + | ||
| 88 | + msg)); | ||
| 89 | + }); | ||
| 90 | + | ||
| 91 | + socket.on('leaveRoom', (num, name) => { | ||
| 92 | + $('#messages').append($('<li>').text(name + ' leaved ' | ||
| 93 | + + room[num] + ' :(')); | ||
| 94 | + }); | ||
| 95 | + | ||
| 96 | + socket.on('joinRoom', (num, name) => { | ||
| 97 | + $('#messages').append($('<li>').text(name + ' joined ' | ||
| 98 | + + room[num] + ':)')); | ||
| 99 | + }); | ||
| 100 | + }); | ||
| 101 | +</script> | ||
| 102 | +</body> | ||
| 103 | +</html> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment