简体   繁体   English

如何设置socket.io以获取实时数据

[英]How to setup socket.io for getting data real-time

I'm new to mean-stack and I followed some instruction on how to get real-time data. 我是卑鄙的新手,我遵循了有关如何获取实时数据的一些说明。 I tried every single steps but none of it is working, how can I use socket.io correctly? 我尝试了每个步骤,但都无法正常工作,如何正确使用socket.io? I provided my code here for getting users from mongodb, please do correct my code 我在此处提供了用于从mongodb吸引用户的代码,请更正我的代码

server.js server.js

var express     = require ('express');
var app         = express();
var server      = require('http').Server(app);
var http        = require('http').Server(app);
var io          = require('socket.io')(http);
var morgan      = require ('morgan');
var mongoose    = require('mongoose');
var appRoutes   = require('./app/routes/api');

app.use(morgan('dev'));
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(express.static(__dirname + '/public'));
app.use('/api',appRoutes);

mongoose.connect('mongodb://localhost:27017/testing', function(err){
    if(err){
        console.log('Not connected' + err);
    } else
    {
        console.log('Connected');
    }
});

Then here is the part where I get the users from the table, I don't know how to get the the data real-time: 然后是从表中获取用户的部分,我不知道如何实时获取数据:

api.js api.js

var User = require('../models/user');
const router = express.Router();
router.get('/management', function(req, res) {
        User.find({}, function(err, users) {
                if (!users) {
                    res.json({ success: false, message: 'Users not found' }); 
                } else {
                    res.json({ success: true, users: users,});
                }
        });
    });

userCtrl.js userCtrl.js

.controller('managementCtrl', function(User, $scope) {
 function getUsers() { 
        User.getUsers().then(function(data) {
            if (data.data.success) {
                app.users = data.data.users;    
            } else {
                app.errorMsg = data.data.message; 
            }
        });
    }
});

userServices.js userServices.js

angular.module('userServices', [])

.factory('User', function($http) {
 var userFactory = {}; 
 userFactory.getUsers = function() {
        return $http.get('/api/management/');
    };

 return userFactory;
    });

};

users.html users.html

<tbody>
    <tr ng-repeat="person in management.users">
        <td align="center">{{ person.name }}</td>
        <td align="center">{{ person.email }}</td>
    </tr>
</tbody>

You have to make establish persistent socket connection with the frontEnd. 您必须与frontEnd建立持久的套接字连接。 After making the persistent connection you have to listen for the particular event and then send the realtime user Data. 建立持久连接后,您必须侦听特定事件,然后发送实时用户数据。
You can achieve this by: 您可以通过以下方法实现此目的:

server.js server.js

 var express     = require ('express');
var app         = express();
var server      = require('http').Server(app);
var http        = require('http').Server(app);
var io          = require('socket.io')(http);
var morgan      = require ('morgan');
var mongoose    = require('mongoose');
var appRoutes   = require('./app/routes/api');
var User = require('../models/user');

app.use(morgan('dev'));
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(express.static(__dirname + '/public'));
app.use('/api',appRoutes);

mongoose.connect('mongodb://localhost:27017/testing', function(err){
    if(err){
        console.log('Not connected' + err);
    } else
    {
        console.log('Connected');
    }
});

io.on('connection', function(socket) {
  console.log('New Socket has been connected');
  socket.on('getUserDetails', function() {
    User.find({}).then(function(data){
      socket.emit('userDetails', data)
   })
  })
})

In fronEnd you can emit the event getUserDetails for getting the data from the server and listen on userDetails for getting the response from the server. 在fronEnd中,您可以发出事件getUserDetails从服务器获取数据,并侦听userDetails以从服务器获取响应。

Something like this can be implemented in front end angular 这样的事情可以在前端角度实现

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用Socket.IO实时更新数据? - Use Socket.IO to update data in real-time? 如何使用 node.js、socket.io 和 mysql 显示实时数据? - how to show real-time data using node.js, socket.io and mysql? 关于so​​cket.io实时文本显示的问题 - Issue about socket.io real-time text display 带有PubSub的Socket.io:刷新多页后几乎不显示实时数据 - Socket.io with PubSub : Less to no real-time data displayed after multiple page refresh 使用Socket.IO(websocket)和4G在两个Android之间进行实时数据传输 - Real-time data transfer between two Androids using Socket.IO (websocket) and 4G 如何在react-native中使用node.js和Socket.io实现实时聊天? - How to Implement real-time chatting using node.js and Socket.io in react-native? 实时(node / socket.io)的“管道”如何工作? - How does the “plumbing” of real-time (node/socket.io) work? 如何保护Redis和Socket.IO实时服务器的安全,以便只有经过身份验证的用户才能收听? - How to secure Redis & Socket.IO real-time server so only authenticated users can listen? Node.js:实时应用需要Socket.io + Express吗? - Node.js: Socket.io + Express needed for real-time apps? 使用 socket.io 将 MERN 聊天应用程序转换为实时 - Converting MERN chat app to real-time using socket.io
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM