当前位置: 首页 > 知识库问答 >
问题:

如何管理WebSocket、Socket和NodeJS应用程序的端口?

鞠安民
2023-03-14

我最终使用了3个不同的端口。777,3000和4000,我似乎仍然没有一个想要的结果。

如何为Socket.io和nodejs应用程序使用相同的端口?即使用端口3000。

var createError = require('http-errors');
var express = require('express');
var app = require('express')();
var http = require('http').Server(express);
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var io = require('socket.io')(http);
io.listen(4000);
var nsp = io.of('/channel1');
var net = require('net');

var server = net.createServer(function(socket) {
  socket.pipe(socket);
  socket.setEncoding('utf8');
  socket.on("data", function(d) {
    nsp.emit('live-data', d);
    console.log("DATA:", d);
  });
});

server.listen(777, '127.0.0.1');

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

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;

共有1个答案

钱安和
2023-03-14

来自socket.io的官方自述文件

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ }); 
server.listen(3000);

这将允许您对express和Socket.io使用相同的端口。

 类似资料:
  • Windows NT Option Pack 提供了在 Web 服务器上的 ASP 应用程序管理服务。例如,Internet 服务管理器为应用程序开发人员提供了一个使用简便的管理工具来设置应用程序的属性。另外,Active Server Pages 提供了允许用户的应用程序存储全局数据的脚本功能。本主题简要介绍部分应用程序管理功能,并提供到详细信息的链接。 启动和结束应用程序 当 Web 服务器第

  • 默认情况下,你会将应用程序放入application/中,并且可能用 CodeIgniter 只管理这一个应用程序。当然,多个应用程序共享一个 CodeIgniter, 甚至对 application 文件夹进行重命名或更换路径也是可行的。 对应用程序文件夹重命名 如果你要对 application 进行重命名, 你需要打开 index.php 文件,对变量 $application_folder

  • 默认情况下,CodeIgniter 假设你只有一个应用程序,被放置在 application/ 目录下。但是,你完全可以拥有多个程序并让 它们共享一份 CodeIgniter 。你甚至也可以对你的应用程序目录 改名,或将其移到其他的位置。 重命名应用程序目录 如果你想重命名应用程序目录,你只需在重命名之后打开 index.php 文件将 $application_folder 变量改成新的名字:

  • Rails 是一个非常受欢迎的 Web 应用程序框架(从某种意义上说,是由于它被广泛应用而不是人们真正喜欢它)。 因此,在某些时候,你可能会被要求管理它。 本节要介绍的处方包含了安装一台运行 Rails 应用程序服务器所要做的绝大部分工作。 本处方假定你会使用 Nginx 和 Passenger 作为 Web 服务器, 然而你也可以轻松地修改本处方,使用 Apache 替换它。 操作步骤 创建 r

  • 在入口点使用时,如何指定它绑定到的端口? 默认情况下,它使用 5000。 请注意,此问题特定于新的 ASP.NET 核心 API(当前在 1.0.0-RC2 中)。

  • 我有一个Android应用程序,我可以在其中向一个servlet发送多部分post。但我要把电话限制在每5分钟一次。有了web表单,我就可以使用cookie了。对于android应用程序,它不是这样工作的。我怎么才能让它工作呢?