我在Web服务器上有一个MongoDB,我有一个Mean堆栈Web应用程序。在MongoDB中,我有一堆数据要传递给我的Web应用程序。我已经研究了各种选择,但是我不确定要采取哪种方法来实现这一目标。我已经考虑使用socket.io在我的Web服务器上设置一个监听器来打开与我的数据库的连接,然后进行API调用或直接数据库连接来返回我的数据。
我应该补充一点,我的应用程序基于mean.io样板代码。
我的问题是我的堆栈中需要放置socket.io代码?
在我的应用程序的根目录中包含socket.io代码或仅在需要将数据从我的Web服务器传递到我的应用程序的包/模块中是否明智?
最后,socket.io甚至是首选的路线吗?还有另一种实现这一点的方法更有意义,例如express.js?
答案 0 :(得分:1)
你应该在Express中创建一个路线,然后从你的角度SPA请求带有http模块的路线,比如$ http ou Restangular。 看一下这篇文章https://scotch.io/tutorials/setting-up-a-mean-stack-single-page-application
答案 1 :(得分:1)
除非您想要从数据库到前端的实时持续,持久的信息流,否则不需要使用socket.io。
首先在您的快递应用中,使用https://github.com/mongodb/node-mongodb-native
连接到数据库。然后,您可以为要发送的数据设置JSON端点路由。然后,需要数据的客户端网页只是向JSON页面发送XHR请求。
编辑:OP确实想使用socket.io。
如果要使用socket.io,则必须将其包含在服务器和客户端上。
服务器端:
const express = require('express');
const app = express();
const server = require('http').Server(app);
// socket.io
const io = require('socket.io').listen(server);
// handling socket.io requests
io.on('connection', (socket) => {
log.info('new connection.');
socket.emit('data', {/** whatever data you need to send **/});
socket.on('disconnect', (e) => {
log.info('user disconnected.');
});
});
客户端:
确保在html文件中包含socket.io(从网站上获取)。然后,在你的客户端js:
const socket = io();
socket.on('connect', () => {
console.log('connected to server.');
});
socket.on('disconnect', () => {
console.log('disconnected.');
});
socket.on('data', (data) => {
// this is where you receive the data
// do something with your data
});