我使用 Laravel websockets 和 Echo 来创建一个简单的实时聊天。但是有一点我不明白。
我有 2 台服务器:
- 带有 Laravel Echo(聊天前端)的 Laravel 应用程序
- 安装了 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);
});
用它来发送消息会很聪明吗?还是有其他方法可以绕过发布请求?