具有Socket IO NodeJS 的快速路由

quhf5bfb  于 2023-02-03  发布在  Node.js
关注(0)|答案(1)|浏览(151)

我正在使用NodeJS创建一个微服务,它将使用socketIO发送和接收消息。我正在使用样板文件并使用ExpressRouter设置GETPOST路由

socket.on('sendmessage', (newMessage) => {
    socket.in(userId).emit('newmessage', newMessage);
});
app.post('/sendMessage', expressAsyncHandler(async function (req, res) {
  // saving the message to database and returning a response....
}))

我只是很困惑,如果我可以在socketIO代码块中处理所有的数据保存、验证和授权功能,为什么还需要routes?对于这样一个确保消息传递和无数据丢失的应用程序来说,什么是最好的情况?

iyr7buue

iyr7buue1#

是否使用路由取决于应用程序的设计和体系结构。如果需要实现发送和接收消息之外的其他功能(如身份验证或数据验证),则将路由与Express一起使用是一个不错的选择。如果应用程序仅侧重于发送和接收消息,则可以在socket.on()事件中处理该功能。
为了确保消息传递和避免数据丢失,您可以实现消息确认或实现消息队列(如RabbitMQ或Apache Kafka),以便在服务器处理消息之前缓冲消息,这有助于确保即使服务器宕机或存在连接问题,消息也不会丢失。

相关问题