我正在使用NodeJS创建一个微服务,它将使用socketIO
发送和接收消息。我正在使用样板文件并使用ExpressRouter
设置GET
和POST
路由
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
?对于这样一个确保消息传递和无数据丢失的应用程序来说,什么是最好的情况?
1条答案
按热度按时间iyr7buue1#
是否使用路由取决于应用程序的设计和体系结构。如果需要实现发送和接收消息之外的其他功能(如身份验证或数据验证),则将路由与Express一起使用是一个不错的选择。如果应用程序仅侧重于发送和接收消息,则可以在socket.on()事件中处理该功能。
为了确保消息传递和避免数据丢失,您可以实现消息确认或实现消息队列(如RabbitMQ或Apache Kafka),以便在服务器处理消息之前缓冲消息,这有助于确保即使服务器宕机或存在连接问题,消息也不会丢失。