Socket.io + REST API + REACT - 将 socket.io 与 REST API 分开更好吗
Socket.io + REST API + REACT - is it better to separate socket.io from REST API
我的问题可能会被标记为“基于意见”,但我想知道哪种方法最适合我的应用程序,因为我可以两种方式进行。
我正在构建聊天应用程序,其中的用户和对话保存在 MongoDB 中。我会让我的 React 应用程序消耗 API/APIs。问题是 - 将 REST API 和 Socket.io 应用程序 运行 分开会更好吗?例如:
- 在端口 3005
上有 REST API 运行
- 在端口 3006
上有 Socket.io 运行
React 应用程序分别使用这两个,基本上它们不会相互了解。我在 REST 中的端点 API 端点和 socket.io 将仅在前端调用。
另一方面,我可以让我的 socket.io 应用程序和 REST API 在一个大应用程序中协同工作。我认为它可以毫无问题地工作。
总而言之,乍一看我会采用第一种方法 - 更清洁且易于维护。但我想听听其他意见,或者是否有人有类似的项目。当你有 socket.io 和 REST API?
时,通常在这种项目中是如何制作的
您可以为 socket.io
逻辑创建一个单独的文件,例如 this:
// socket.mjs file
import { Server } from "socket.io"
let io = new Server()
const socketApi = {
io: io
}
io.on('connection',(socket)=>{
console.log('client connected:', socket.id)
socket.join('modbus-room')
socket.on('app-server', data=>{
console.log('**************')
console.log(data)
io.to('modbus-room').emit('modbus-client', data)
})
socket.on('disconnect',(reason)=>{
console.log(reason)
})
})
export default socketApi
并将其添加到您的项目中,如 this:
// index.js or main file
//...
import socketApi from "../socket.mjs";
//...
//
/**
* Create HTTP server.
*/
const server = http.createServer(app);
socketApi.io.attach(server);
//
我会检查这两种情况的优缺点。例如,如果您只有一个应用程序并且您不必关心哪些版本相互兼容,则代码和资源的可重用性会更好。另一方面,一个错误可以杀死两个应用程序,因此从安全角度来看,最好有单独的应用程序。我认为这个决定取决于对你来说重要的利弊。
我的问题可能会被标记为“基于意见”,但我想知道哪种方法最适合我的应用程序,因为我可以两种方式进行。
我正在构建聊天应用程序,其中的用户和对话保存在 MongoDB 中。我会让我的 React 应用程序消耗 API/APIs。问题是 - 将 REST API 和 Socket.io 应用程序 运行 分开会更好吗?例如:
- 在端口 3005 上有 REST API 运行
- 在端口 3006 上有 Socket.io 运行
React 应用程序分别使用这两个,基本上它们不会相互了解。我在 REST 中的端点 API 端点和 socket.io 将仅在前端调用。
另一方面,我可以让我的 socket.io 应用程序和 REST API 在一个大应用程序中协同工作。我认为它可以毫无问题地工作。
总而言之,乍一看我会采用第一种方法 - 更清洁且易于维护。但我想听听其他意见,或者是否有人有类似的项目。当你有 socket.io 和 REST API?
时,通常在这种项目中是如何制作的您可以为 socket.io
逻辑创建一个单独的文件,例如 this:
// socket.mjs file
import { Server } from "socket.io"
let io = new Server()
const socketApi = {
io: io
}
io.on('connection',(socket)=>{
console.log('client connected:', socket.id)
socket.join('modbus-room')
socket.on('app-server', data=>{
console.log('**************')
console.log(data)
io.to('modbus-room').emit('modbus-client', data)
})
socket.on('disconnect',(reason)=>{
console.log(reason)
})
})
export default socketApi
并将其添加到您的项目中,如 this:
// index.js or main file
//...
import socketApi from "../socket.mjs";
//...
//
/**
* Create HTTP server.
*/
const server = http.createServer(app);
socketApi.io.attach(server);
//
我会检查这两种情况的优缺点。例如,如果您只有一个应用程序并且您不必关心哪些版本相互兼容,则代码和资源的可重用性会更好。另一方面,一个错误可以杀死两个应用程序,因此从安全角度来看,最好有单独的应用程序。我认为这个决定取决于对你来说重要的利弊。