2017-06-26 82 views
0

我在Web服務器上有一個MongoDB,並且我有一個Mean stack Web應用程序。在MongoDB中,我有一堆我想傳遞給我的Web應用程序的數據。我已經研究過選項,但我有點不確定要採取何種途徑來實現這一目標。我曾考慮使用socket.io在我的Web服務器上設置一個偵聽器,以打開與我的數據庫的連接,然後進行API調用或直接連接數據庫以返回數據。將數據從MongoDB傳遞到我的前端應用程序

我應該補充說我的應用程序是基於mean.io樣板代碼的。

我的問題是在我的堆棧中,我需要把socket.io代碼?

在我的應用程序的根目錄中包含socket.io代碼還是僅在需要將數據從我的Web服務器傳遞到我的應用程序的包/模塊中才明智?

最後,socket.io甚至是首選路線?有沒有另外一種方法來實現這一點,比如express.js更有意義?

回答

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 
}); 
+1

實時持續流實際上是我需要的,所以,它聽起來就像是socket.io正確的路線我想借此 – Harry

+0

我很欣賞這樣的功能,它使事情更清晰。我想傳遞給我的前端應用程序的數據實際上是在單獨的MongoDB服務器上。我需要以某種方式通過類似這樣的調用從客戶端文件建立到服務器的連接 - var socket = io.connect('server address here'); 我的問題是這個連接適合我正在使用的堆棧 – Harry

+1

不,socket.io需要連接到快速Web服務器,而不是連接到mongo數據庫服務器。快速Web服務器然後連接到Mongo數據庫服務器。在我的答案的鏈接中使用NodeJS API,您需要從數據庫獲取數據,並通過回調將其傳遞給socket.io。 – frozen

相關問題