【问题标题】:How can I prevent data loss when saving web socket messages to mysql?将 Web 套接字消息保存到 mysql 时如何防止数据丢失?
【发布时间】:2017-04-02 01:08:03
【问题描述】:

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

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

【问题讨论】:

  • Websockets 或 Socket.io ?
  • 以什么方式打败目的?
  • 我们说的是几毫秒。用户甚至不会察觉到保存到 mysql 所带来的延迟。如果是这样,则您的查询或服务器可能存在问题。
  • @kalanaDemel 这是 websockets

标签: mysql node.js websocket real-time


【解决方案1】:

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

语音/视频期间的某些系统(例如 Google Hangouts)甚至不会尝试保存聊天记录。

只有当您的数据库服务器空间不足或出现故障时,您才会真正遇到问题,在这种情况下,您会遇到更大的问题,并且您的错误消息会提示用户。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多