app.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. socket.emit('me', socket.id);
  22. socket.on('callTo', async ({ to, signalData, from, userId, companionId }) => {
  23. const { name, lastName, color, avatarUrl, number } =
  24. await ChatModel.getByField(userId, companionId);
  25. io.to(to).emit('incomeCall', {
  26. signal: signalData,
  27. from,
  28. name,
  29. lastName,
  30. color,
  31. avatarUrl,
  32. number,
  33. });
  34. });
  35. socket.on('answerCall', (data) => {
  36. io.to(data.to).emit('acceptedCall', { signal: data.signal });
  37. });
  38. });
  39. module.exports = server;