app.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const express = require('express');
  2. const app = express();
  3. const http = require('http');
  4. const { Server } = require('socket.io');
  5. const ChatModel = require('./model/chat');
  6. const cors = require('cors');
  7. const logger = require('morgan');
  8. const helmet = require('helmet');
  9. const formatsLogger = app.get('env') === 'development' ? 'dev' : 'short';
  10. app.use(helmet());
  11. app.use(logger(formatsLogger));
  12. app.use(cors());
  13. const server = http.createServer(app);
  14. const io = new Server(server, {
  15. cors: {
  16. origin: '*',
  17. methods: ['GET', 'POST'],
  18. },
  19. });
  20. io.on('connection', (socket) => {
  21. console.log(socket.id);
  22. socket.emit('me', socket.id);
  23. socket.on('callTo', async ({ to, signalData, from, userId, companionId }) => {
  24. const { name, lastName, color, avatarUrl, number } =
  25. await ChatModel.getByField(userId, companionId);
  26. io.to(to).emit('incomeCall', {
  27. signal: signalData,
  28. from,
  29. name,
  30. lastName,
  31. color,
  32. avatarUrl,
  33. number,
  34. });
  35. });
  36. socket.on('answerCall', (data) => {
  37. io.to(data.to).emit('acceptedCall', { signal: data.signal });
  38. });
  39. });
  40. module.exports = server;