如何将套接字正确连接到应用程序

时间:2020-04-12 21:35:08

标签: node.js reactjs ecmascript-6 socket.io react-redux

我尝试了很多方法,但是没有用,我想从数据库中获取帖子,因此当用户向帖子列表中添加帖子时,它会动态更新,因此我希望它成为带有套接字的实时应用程序

我已经在服务器文件中这样设置了套接字

select * from @TABLE;

我的路线在另一个文件中

select ',"pipelineParameters":' + name from @TABLE

这是我打开应用程序时被触发的动作

    const http = require('http');
    const express = require('express');
    const socketio = require('socket.io');
    const connectDB = require('./config/db');
    const app = express();
    const server = http.createServer(app);
    const io = socketio(server);
    const PORT = process.env.PORT;
    // Connect Database
    connectDB();

    // Init Middelware
    app.use(express.json({ extended: false }));

    // app.get('/', (req, res) => {
    //   res.send('Api running');
    // });

    // connect to socket
    io.on('connection', (socket) => {});

    // set io as const to be able to use it in another route
    app.use(function (req, res, next) {
      req.io = io;
      next();
    });
    // Define Route
    app.use('/api/users', require('./routes/api/user'));
    app.use('/api/auth', require('./routes/api/auth'));
    app.use('/api/posts', require('./routes/api/post'));
    app.use('/api/profile', require('./routes/api/profile'));
    app.use('/api/friend', require('./routes/api/friends'));

    server.listen(PORT, () => console.log(`Server listen on port ${PORT}`));

这是我用来显示帖子的组件

    router.get('/', auth, async (req, res) => {
      try {
        let friendList = await Friends.findOne({ user: req.user.id });

        let postitem = await Post.find({ user: req.user.id }).sort({
          date: -1,
        });

        if (!postitem) {
          return res.status(400).json({ msg: 'No post Found! Start now' });
        }

        if (friendList) {
          if (friendList.friends.map((item) => item.posts).length > 0) {
            friendList.friends.forEach(async (friend) => {
              const friendPost = await Post.find({
                user: friend.user,
              });

              if (friendPost.length > 0) {
                friendPost.map((item) => {
                  postitem.unshift(item).sort({
                    date: -1,
                  });
                });
                // socket.emit('postArray', console.log('this is my data one'));
                res.json(postitem);
              }
              // socket.emit('postArray', console.log('this is my data two'));
              res.json(postitem);
            });
          }
        } else {
          // const myData = res.json(postitem);
          // socket.emit('postArray', postitem);
          res.json(postitem);
        }
        // await update.save();
      } catch (err) {
        console.error(err.message);
        res.status(400).send('Server Error');
      }
    });

0 个答案:

没有答案