1

我使用 Laravel websockets 和 Echo 来创建一个简单的实时聊天。但是有一点我不明白。

我有 2 台服务器:

  1. 带有 Laravel Echo(聊天前端)的 Laravel 应用程序
  2. 安装了 Laravel websocket 的 Laravel 服务器。

当用户发送消息时,一个 post 请求将发送到服务器 1。服务器 1 将发送发送消息事件到套接字服务器(服务器 2):

event(new NewMessage($channel, $message));

同时聊天正在监听套接字服务器:

    Echo.channel(channel).listen('NewMessage', (data) => {
        console.log(data.question)
    })

这一切都很好,根据我阅读的文档,这是要走的路。我遇到的问题是,我觉得发送消息的发布请求完全没有必要。我不会将消息存储在数据库或任何东西中。所以 post 请求唯一要做的就是将消息发送到服务器,然后服务器将消息发送到下一个服务器。因此,对于发送的每条消息,这是一个不必要的发布请求。

在文档中,他们提到了一些关于 Laravel echo Whisper 的内容,他们用它来发送“有人正在打字”的更新:

.whisper('typing', {
    name: "me"
});

并收听消息:

.listenForWhisper('typing', (e) => {
    console.log(e.name);
});

用它来发送消息会很聪明吗?还是有其他方法可以绕过发布请求?

4

0 回答 0