我在同一埠上有一個使用 Expressjs 和 SocketIO 服務器的 nodejs Web 應用程式。該網路應用程式具有注冊、登錄和儀表板頁面。使用 Websocket,訪客或注冊用戶可以一起聊天。
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);
app.get('/', (req, res) => {
//
});
app.get('/auth', (req, res) => {
//
});
app.get('/dashboard', (req, res) => {
//
});
io.on('connection', (socket) => {
console.log('a user connected');
});
server.listen(3000, () => {
console.log('listening on *:3000');
});
我應該將 web 和 socketio 作為獨立專案分開嗎?我很擔心,因為 websocket 服務器/socketio 稍后會被橫向擴展。Web 應用程式可能還需要擴展。
這樣一個專案的最佳架構是什么?
我是初學者,不熟悉擴展 nodejs 應用程式,所以很抱歉我的問題。
以Crisp為例。
uj5u.com熱心網友回復:
在同一行程中運行 HTTP 和 Socket.IO 服務器,稍后當您想要水平擴展時引入負載平衡以將請求分發到服務器的多個實體。
對于多個實體,您還將擁有多個 Socket.IO 服務器,它們需要在彼此之間傳遞訊息,因此事件可以到達客戶端,而不管它們連接到哪個實體,這由通常使用 Redis 進行通信的配接器處理,采取在這里查看更多資訊:https ://socket.io/docs/v4/using-multiple-nodes/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/447595.html
