创建套接字。使用快速生成器的输入输出服务器
原文:https://www . geesforgeks . org/creating-socket-io-server-use-express-generator/
插座。IO 是服务器和客户端实时通信的库。在套接字中。IO,头只共享一次,它也在 TCP 层的顶部工作。网络套接字是套接字的基础。IO 库。实现套接字更容易。不是由快速生成器构成的快速应用程序中的输入输出。
插座。IO 主要工作在基于事件的通信上。在这里,服务器或客户端发出一个事件,它正被另一个捕获。
模块安装:
-
安装快速发电机:
js npm install -g express-generator
-
创建快速应用程序:
js npm express applicaion_name
例如,您可以创建“npm 快速套接字测试”
-
我们还可以在制作 express 应用程序时将视图引擎设置为:
设置视图引擎(可选)
js npm express socketIOTest --view=jade
-
安装插座 IO:
js npm install socket.io --save npm install
创建套接字服务器的步骤:
-
转到 App.js 文件并导入套接字。IO 和 http 模块为:
```js var http=require("http"); var socketio=require("socket.io");
```
-
创建一个套接字 IO 服务器:
```js 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 }; ```
-
现在转到 BIN 文件夹内的 www 文件,用以下代码替换代码:
```js
!/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); } ```
这是链接套接字的方式。与快速服务器的 IO。
版权属于:月萌API www.moonapi.com,转载请注明出处