WebSocket允许双向通信:服务器可以向浏览器发送消息,浏览器 - 客户端 - 可以通过相同的连接进行响应。
我正在 Laravel 6 中实现聊天应用程序:使用:
Laravel Echo JavaScript Package (不是 laravel-echo-server),
Laravel WebSockets
pusher-js.
我已经知道服务器触发事件,客户端按如下方式侦听这些事件。
安装 Laravel WebSockets 软件包。
composer require beyondcode/laravel-websockets
配置。config/broadcasting.php
'pusher' => [
'driver' => 'pusher',
'key' => xxx,
'secret' => xxx,
'app_id' => xxx,
'options' => [
'cluster' => xxx,
'encrypted' => true,
'useTLS' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'https',
],
],
]
配置config/websockets.php
'apps' => [
[
'id' => xxx,
'name' => xxx,
'key' => xxx,
'secret' => xxx,
'enable_client_messages' => true,
'enable_statistics' => true,
],
],
安装服务器。Pusher
composer require pusher/pusher-php-server "~3.0"
将广播驱动程序设置为在文件中使用。pusher.env
BROADCAST_DRIVER=pusher
使用和在我的客户端。laravel-echopusher-js
import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'your-pusher-key',
wsHost: window.location.hostname,
wsPort: 6001,
disableStats: true,
});
启动 WebSockets 服务器。
php artisan websockets:serve
在服务器端,使用实现类的事件类触发事件。ShouldBroadcastNow
event(new MyEventClass((object)$message));
一切都很好。在步骤 8 中,我从服务器端触发事件。
请注意,我没有使用官方的Pusher服务器,我只是利用Puster API实现,而是指向步骤6中配置的本地。pusher-jsLaravel Echo JavaScript packageLaravel WebSockets server
请不要混淆 。我没有使用.Laravel Echo JavaScript packagelaravel-echo-serverSocket.IO ServerSocket.IO Server
现在,我不想像步骤 8 中所示在服务器端触发事件,而是希望从客户端触发事件,因为 WebSocket 允许双向通信。我怎样才能做到这一点, ?LaravelLaravel Echo JavaScript PackageLaravel WebSockets PHP package
喵喵时光机
慕后森
慕尼黑5688855
慕码人2483693