use*_*554 7 php sockets node.js laravel-5
我有一个事件SomeEvent.php
像这样:
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class SomeEvent implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;
public $data;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($array)
{
$this->data = $array;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在我的bootstrap.js中包含以下内容并使用gulp进行编译
import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'socket.io',
host: 'http://site.dev:6001'
});
window.Echo.private('channel-name')
.listen('SomeEvent', (e) => {
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
然后我安装了tlaverdure/laravel-echo-server,这是我的laravel-echo-server.json
{
"appKey": "[generated]",
"authHost": "http://site.dev",
"authEndpoint": "/broadcasting/auth",
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": false,
"host": "sitei.dev",
"port": "6001",
"referrers": [],
"socketio": {},
"sslCertPath": "",
"sslKeyPath": ""
}
Run Code Online (Sandbox Code Playgroud)
现在,当我用laravel-echo-server启动laravel echo服务器启动它启动时非常好,但是当我启动上述事件时
event(new SomeEvent(json_encode(['name' => 'some-name'])));
Run Code Online (Sandbox Code Playgroud)
我可以看到发布到redis的事件,但是我的客户端控制台没有任何东西:我也在我的master.blade.php中包含socket io
以上也会发生通知
任何帮助将受到高度赞赏.多谢你们
小智 1
您是否在 BroadcastServiceProvider 中为您的频道定义了身份验证规则?
如果您在 laravel-echo-server.json 中设置 devMode,您是否会看到有关连接和离开通道的任何信息?
我在尝试设置 websocket 连接时遇到了很多麻烦,但最终解决了,我的代码看起来与你的非常相似。
祝你好运!
| 归档时间: |
|
| 查看次数: |
2347 次 |
| 最近记录: |