2016-09-06 25 views
-1

我有一個關於Node.js的問題如何組織Web和一個socket.io服務器?

是否有可能有多個server.js文件

像:你有一個「主」 server.js哪些路由你到另一個目錄,並有另一臺服務器.js處理socket.io或類似的東西?

更具體:

我想建立的WebSocket的一個遊戲,並希望有一個server.js哪些路由你的遊戲頁面,然後在「遊戲頁面」我希望它連接它到「另一個」server.js並處理像websockets,登錄和類似的東西。或者我必須擁有一個server.js文件中的所有內容

我聽說了modules.export函數,但我不認爲這是我正在尋找的。

+0

所以要清楚,你需要兩個不同的服務器進程teracting?或者一個文件啓動另一個文件? – DrakaSAN

+0

我想讓兩個服務器進程互相交互 –

+1

您可以將其命名爲init.js,app.js等其他名稱。您可以將您的文件命名爲不一定需要的server.js,它只是一個所有人遵循的名稱。建議你根據文件的使用情況給你的文件的名稱,如socket.js –

回答

0

兩者都是可能的。如果我理解正確,你想擁有一個web服務器和一個socket.io服務器。

您可以在同一個文件一舉兩得:

'use strict'; 
const express = require('express'), 
    socket= require('socket.io'), 
    app = express(), 
    io = socket(); 

//... 

app.listen(80); 
io.listen(12345); 

在不同的文件:

web.js:

'use strict'; 
const express = require('express'), 
    app = express(); 

//... 

app.listen(80); 

io.js:

'use strict'; 
const socket= require('socket.io'), 
    io = socket(); 

//... 

io.listen(12345); 
+0

謝謝,這就是我想聽到的。還有一個問題,如果我想讓2個文件都必須在同一個文件夾中嗎? –

+0

不需要,他們可以完全不同的項目。 – DrakaSAN

+0

好的在此先感謝在網上找不到任何東西。 –

0

回答你的問題。您希望多個進程監聽不同的事情。是的,你可以這麼做。您可能希望一個進程偵聽端口80來處理網絡流量,另一個進程偵聽另一個端口。

通過讓2個不同的「項目」共享一個數據庫,或者您可以在1個項目的2個不同端口上啓動2個不同的服務器,可以實現這一點。

如果你知道2臺「服務器」的責任將會非常不同(例如一臺服務器處理所有遊戲數據等,另一臺服務器處理標準網頁流量等等),我可能會將其分開在開始時。