我正在制作一个聊天应用程序。我有像这样的操作 发送消息:
sending_client_socket -> server_socket -> receiving_client_socket
这显然非常快,但是当我需要持久化消息数据时呢?我最初应该使用 http 帖子吗?
http_post -> http_server -> emitting_server_socket -> receiving_client_socket
我担心这会很慢,因为标题等。
我的另一个选择似乎是:
sending_client_socket -> server_socket -> receiving_client_socket -> database operations) -> receiving_client_socket
但我对这种方法有安全问题,因为我将无法验证谁在发送消息(因为我使用的是 jwts)。
常见的方法是什么?
哪些操作应该是套接字,哪些应该是 http?
没有特定的偏好。 使用 webSocket 或 socket.io 连接可以很好地满足持久化数据的要求。 数据是如何发送的(通过webSocket或通过http post)并不重要。 您的服务器可以实现代码,以便在数据到达时对数据执行任何操作。
因此,选择出于其他原因最有意义的传输,然后将代码放在该传输后面以保留数据。
如果您出于其他原因已经拥有经过身份验证的 socket.io 连接,那么仅通过要保留的连接发送数据是完全有意义的。
如果您没有受信任的方法来验证 socket.io 的其他端点,并且在您已经拥有适当的身份验证代码的情况下使用 HTTP 帖子更容易、更简单或更实用,那么您也可以这样做。 由于所有 socket.io 连接都以 HTTP 连接开头,并且 socket.io 中内置了身份验证方案,因此您也可以将身份验证方案移动到 socket.io。 哪个更实用的实施将是一个不错的选择。
常见的方法是什么?
当然,HTTP请求比通过 socket.io 发送的消息更常见,但是HTTP更常见,因为其他原因与您的特定情况无关。 有关在 socket.io 或通过 Ajax 支持给定请求的一般讨论,您可以看到另一个答案:Ajax vs Socket.io