[英]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.