gpt4 book ai didi

socket.io - 为什么你需要一个消息队列来与网络套接字聊天?

转载 作者:行者123 更新时间:2023-12-04 13:57:56 25 4
gpt4 key购买 nike

我在互联网上看到了很多使用 Web 套接字和 RabbitMQ ( https://github.com/videlalvaro/rabbitmq-chat ) 的聊天示例,但是我不明白为什么需要它作为聊天应用程序的消息队列。

为什么不能通过网络套接字将消息从浏览器发送到服务器,然后服务器再次使用带有广播方法的网络套接字将该消息广播到其他事件浏览器? (也许我错过了一些东西)

伪代码示例(使用 socket.io):

// client (browser)
socket.emit("message","my great message that will be received by all"


// server (any server can be, but let's just say that it is also written in JavaScript
socket.on("message", function(msg) {
socket.broadcast.emit(data);
});

// the rest of the browsers
socket.on("message", function(msg) {
// display on the screen the message
});

最佳答案

我个人认为 RabbitMQ 不应该用于聊天室。至少,不在应用程序的“聊天”或“房间”部分。

除非你的聊天室根本不关心历史——我认为大多数人都关心这一点——像 RMQ 这样的消息队列没有多大意义。

你会更好storing the message in a database并为每个用户保留一个标记,说明他们上次看到的消息。

现在,您可能最终需要像 RMQ 这样的东西来促进聊天应用程序的进程。例如,您可以从 Web 服务器卸载进程,并通过 RMQ 将所有消息推送到后端服务,例如更新数据库和缓存层。

这将使您能够更快地扩展前端 Web 服务器,并为每个 Web 服务器支持更多用户。这听起来像是对 RMQ 的一个很好的使用,但并非特定于聊天应用程序。这只是扩展 Web 应用程序/系统的好习惯。

根据我的经验,关键是 RMQ 不负责将消息传递给用户/聊天室。这是通过 websockets 或旨在为每个用户使用的类似技术发生的。

关于socket.io - 为什么你需要一个消息队列来与网络套接字聊天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com