如何解决验证专用示例通道时出错带Redis的LUMEN 5.8
我正在尝试使用laravel回显服务器从lumen应用程序广播客户端应用程序的频道。 在这里,我可以成功广播公共频道,但是当我尝试广播私人频道时,我的laravel echo服务器会抛出错误
为私人示例通道认证qEWAcyHQxWrbCvFmAAAA时出错 错误:无效的URI“ http:localhost:85 / broadcasting / auth”
我已经检查了步骤,然后从逻辑上找到了问题,但是这里可能缺少我一些东西。
我现在正在做的是 我已经在bootstarp / app.php文件中注册了广播服务 创建事件和提供程序并从控制器调用该事件 然后从lumen应用程序启动laravel echo服务器,并为客户端应用程序启动laravel echo + socket.io客户端。
// laravel-echo-server.json
<ng-container matColumnDef="userName">
<th mat-header-cell *matHeaderCellDef mat-sort-header> User Name </th>
<td mat-cell *matCellDef="let element" data-title="User Name:"> {{element.user.userName}} </td>
</ng-container>
//客户端
{
"authHost": "http:localhost:85","authEndpoint": "/broadcasting/auth","clients": [],"database": "redis","databaseConfig": {
"redis": {},"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},"devMode": true,"host": "localhost","port": "6001","protocol": "http","socketio": {},"secureOptions": 67108864,"sslCertPath": "","sslKeyPath": "","sslCertChainPath": "","sslPassphrase": "","subscribers": {
"http": true,"redis": true
},"apiOriginAllow": {
"allowCors": false,"allowOrigin": "","allowMethods": "","allowHeaders": ""
}
}
// bootstrap / app.php
window.Echo = new Echo({
broadcaster: 'socket.io',host: window.location.hostname + ':6001',auth: {
headers: {
Authorization: `Bearer ${token}`
}
}
})
// window.Echo.channel('example-channel')
window.Echo.private('example-channel')
.listen('NewMessageEvent',(e) => {
console.log('hello',e)
}).error(err => console.log('error',err))
// web.php
$app->register(Illuminate\Broadcasting\BroadcastServiceProvider::class);
$app->register(Illuminate\Redis\RedisServiceProvider::class);
$app->register(App\Providers\EventServiceProvider::class);
// NewMessageEvent
$router->group(['middleware' => ['jwt.auth'],'prefix' => 'api'],function () use ($router) {
Broadcast::channel('example-channel',function () {
Log('chennal called');
return true;
});
});
// Class NewMessageListener
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Queue\SerializesModels;
class NewMessageEvent extends Event implements ShouldBroadcast
{
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($message)
{
//
$this->message = $message;
// $this->channel = $channel;
}
public function broadcastOn()
{
// return new Channel('example-channel');
return new PrivateChannel('example-channel');
}
public function broadcastWith()
{
$data = $this->message;
return ["data" => $data];
}
}
//触发事件
<?PHP
namespace App\Listeners;
use App\Events\NewMessageEvent;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class NewMessageListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param NewMessageEvent $event
* @return void
*/
public function handle(NewMessageEvent $event)
{
//
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。