【问题标题】:Pass data from client to server. Express将数据从客户端传递到服务器。表达
【发布时间】:2020-04-21 10:02:54
【问题描述】:

我的快速申请有点卡住了。

我在路由文件夹中有一个文件 index.js,我想保存 mydata

的结果
var express = require('express');
var router = express.Router();

router.get('/', token, function(req, res, next) {
  var mydata = req.userId

  res.render('index', {
    title: 'Welcolme',
  });
});

module.exports = router;

而且,在我的另一个文件(取决于 app.js)中,我想获取 mydata 并将其传递给服务器

var app = require('../app');

server.listen(port, function () {
  require('../assets/js/server/socket')(server, mydata);
});

(这是我的 app.js)

var express = require('express');
var indexRouter = require('./routes/index');
var path = require('path');

var app = express();

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

app.use('/', indexRouter);

module.exports = app;

还有套接字文件

var io = {};

module.exports = (server, mydata) => {
  console.log('Hello : ' , mydata)

  io = require('socket.io')(server);

  io.on('connection', (socket) => {
    console.log('Connected')
  });
};

有没有办法做到这一点?

谢谢你:)

【问题讨论】:

  • 您的 app.js 长什么样,为什么要将 userId 传递给依赖 app.js 的其他文件?
  • 用户 id 是令牌的一部分,我需要它,它让我知道我将在哪个数据库上使用 socketio 端
  • 你能告诉我们socket.js中的代码吗?另外,为什么不一起在 app.js 中启动服务器,而是在单独的文件中启动服务器呢?只是有点困惑。
  • 是的,你是对的,但是代码很长(这就是我分开文件的原因),我只放了关键部分以提高可读性:))
  • 好的,我知道了。让我在答案中添加我的潜在解决方案

标签: node.js express socket.io


【解决方案1】:

也许而不是仍然拥有这个route.get('/') ...

您可以让用户输入数据并通过WebSocket连接直接传输。

例子:

//Client-side

//Get the user data somewhere from the HTML page
const userData = document.getElementbyId("some html element's id here").innerHTML;

//Send it to the back end
socket.emit('userData',userData)

//Open a listener to get the data from the back end later
socket.on('processedData',processedData=>{

//Use it in the way you desired.

});



//Server-side
io.on('connection', (socket) => {
 console.log('Connected')

socket.on('userData',userData=>{
 //Do something here, like validation and stuff

socket.emit('processedData','processedData here')
});


});




【讨论】:

  • 啊,谢谢,我没有想到这个主意,我测试了它有效:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2016-11-12
相关资源
最近更新 更多