Creación del servidor Socket.IO usando Express Generator

Socket.IO es una biblioteca para la comunicación en tiempo real entre el servidor y el cliente. En Socket.IO, los encabezados se comparten solo una vez y también funcionan en la parte superior de la capa TCP. Los Web Sockets son la base de la biblioteca Socket.IO. Es más fácil implementar Socket.IO en las aplicaciones express que no están formadas con express-generator.

Socket.IO funciona principalmente en comunicación basada en eventos. Aquí el servidor o el cliente emite un evento y está siendo captado por otro.

Instalación de módulos:

  1. Instale el generador Express:

    npm install -g express-generator
  2. Crear la aplicación express:

    npm express applicaion_name

    Por ejemplo, puede crear «npm express socketIOTest»

  3. También podemos configurar el motor de vista mientras hacemos la aplicación express como:

    Configuración del motor de vista (Opcional)

    npm express socketIOTest --view=jade
  4. Instale el zócalo IO:

    npm install socket.io --save
    npm install

Pasos para crear el servidor de socket:

  1. Vaya al archivo App.js e importe Socket.IO y el módulo http como:
    var http=require("http");
    var socketio=require("socket.io");
    
  2. Cree un servidor de E/S de socket:

    var createError = require('http-errors');
    var express = require('express');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var http = require("http");
    var socketio = require("socket.io");
    var app = express();
      
    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
      
    // Create the http server
    const server = require('http').createServer(app);
      
    // Create the Socket IO server on 
    // the top of http server
    const io = socketio(server);
      
    // View engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'hbs');
      
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));
      
    app.use('/', indexRouter);
    app.use('/users', usersRouter);
      
    // Catch 404 and forward to error handler
    app.use(function (req, res, next) {
        next(createError(404));
    });
      
    // Error handler
    app.use(function (err, req, res, next) {
      
        // Set locals, only providing error
        // in development
        res.locals.message = err.message;
        res.locals.error = req.app.get('env'
                === 'development' ? err : {};
      
        // render the error page
        res.status(err.status || 500);
        res.render('error');
    });
      
    module.exports = { app: app, server: server };
  3. Ahora ve al archivo www dentro de la carpeta BIN y reemplaza el código con el siguiente código:

    #!/usr/bin/env node
      
    // Module dependencies
    var app = require('../app').app;
    var debug = require('debug')('socketiotest:server');
    var http = require('http');
      
    // Get port from environment and store in Express
    var port = normalizePort(process.env.PORT || '3000');
    app.set('port', port);
      
    // Create HTTP server
    var server = require("../app").server;
      
    // Listen on provided port, on all
    // network interfaces.
      
    server.listen(port);
    server.on('error', onError);
    server.on('listening', onListening);
      
    // Normalize a port into a number,
    // string, or false.
    function normalizePort(val) {
        var port = parseInt(val, 10);
      
        if (isNaN(port)) {
      
            // Named pipe
            return val;
        }
      
        if (port >= 0) {
      
            // Port number
            return port;
        }
      
        return false;
    }
      
    // Event listener for HTTP server "error" event
    function onError(error) {
        if (error.syscall !== 'listen') {
            throw error;
        }
      
        var bind = typeof port === 'string'
            ? 'Pipe ' + port
            : 'Port ' + port;
      
        // Handle specific listen errors with
        // friendly messages
        switch (error.code) {
            case 'EACCES':
                console.error(bind 
                    + ' requires elevated privileges');
                process.exit(1);
                break;
            case 'EADDRINUSE':
                console.error(bind + ' is already in use');
                process.exit(1);
                break;
            default:
                throw error;
        }
    }
      
    // Event listener for HTTP server "listening" event.
    function onListening() {
        var addr = server.address();
        var bind = typeof addr === 'string'
            ? 'pipe ' + addr
            : 'port ' + addr.port;
        debug('Listening on ' + bind);
    }

Así es como puede vincular el Socket.IO con el servidor express.

Publicación traducida automáticamente

Artículo escrito por TARuN y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *