【发布时间】:2017-03-16 01:42:36
【问题描述】:
我有一个活动 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');
}
}
我在 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);
});
然后我安装了 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": ""
}
现在,当我使用 laravel-echo-server 启动 laravel echo 服务器时,它启动得很好,但是当我像这样启动上述事件时
event(new SomeEvent(json_encode(['name' => 'some-name'])));
我可以看到发布到 redis 的事件,但是没有任何内容记录到我的客户端控制台:我还在我的 master.blade.php 中包含套接字 io
通知也会发生上述情况
我们将不胜感激任何帮助。谢谢大家
【问题讨论】:
-
你能解决这个问题吗?我有类似的问题仍然存在stackoverflow.com/questions/41120789/… 任何想法?
-
您的主机设置有错字,不是吗? “sitei.dev”与“site.dev”。会是这样吗?如果没有,你确定一个 redis 工作进程正在运行吗?
标签: php node.js sockets laravel-5