将Web套接字消息保存到mysql时,如何防止数据丢失?

时间:2017-04-02 01:08:04

标签: mysql node.js websocket real-time

我正在尝试在nodejs中实现websocket实时聊天系统。我已经有一个登录系统和websocket聊天系统。我唯一坚持的是将消息保存到MySQL,以便用户可以访问他们的聊天记录。问题是我不想向收件人发送Web套接字消息,然后因任何原因导致MySQL插件失败。

可能的解决方案: 显而易见的解决方案是将消息数据保存在MySQL 中,然后将Web套接字消息发送给收件人。如果有错误,请将其发送回发件人而不是发送邮件。如果服务器必须等待MySQL插入成功确认,那么这不会破坏网络套接字的目的吗?

1 个答案:

答案 0 :(得分:3)

假设这是一个大问题,因为你想避免等待数据库保存的少量延迟(我认为实际上这不是一个问题)。发送消息。在屏幕上,显示'发送消息..' 在服务器上,启动异步数据库保存。 当其他用户的客户端收到该消息时,发送打印 在发件人的屏幕上确认 当服务器上的数据库保存完成时,您不必执行任何操作,除非它出现错误,在这种情况下您可以通知用户保存消息时出错,然后重试保存。

语音/视频等Google Hangouts等系统甚至不会尝试保存聊天记录。

如果您的数据库服务器空间不足或出现故障,您只会遇到问题,在这种情况下,您会遇到更大的问题,并且您的错误消息会让用户知道。

或者您可以等待保存在数据库中,等待的时间不长。此外,websockets和socket.io总是会转到服务器。如果您使用的是WebRTC数据通道,那么 是一个不会涉及服务器的对等2协议协议。