Laravel广播的想法很棒,但是很难弄清楚如何让它工作。即使在阅读文档多次,看了许多教程...也许我只是错过了一些小事。谁知道呢?
我在Homestead上的Laravel 5.4项目中运行以下代码:
# Event
class NewNumber implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;
public $number;
public function __construct($number)
{
$this->number = $number;
}
public function broadcastOn()
{
return new Channel('pub-channel');
}
}
# EventServiceProvider:
protected $listen = [
'App\Events\NewNumber' => [
'App\Listeners\DoSomeThingsWithNewNumber',
],
];
广播的配置设置为Redis。我安装了Laravel回声服务器,并使用laravel-echo-server start运行此功能,并在控制台中看到类似于[11:15:16 AM]-v7y-5DsMXHdBXcqzAAAA加入通道:pub-bingo
它创建了以下配置:
{
"authHost": "http://localhost",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"sslCertPath": "",
"sslKeyPath": ""
}
在javascript中,我添加了:
import Echo from "laravel-echo";
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'
});
console.info(window.Echo.channel('pub-channel'));
window.Echo.channel('pub-channel')
.listen('NewNumber', (e) => {
console.info(e);
alert('Something happened');
console.log(e.number);
});
Chrome中的控制台显示了。信息与有关频道的信息。在我看来一切都很好。
但是没有发生的是,我在监听方法中的警报和console.loggin。
我有一个我在不同浏览器中触发的URL,里面有这个:广播(new\App\Events\NewNumber(rand(1,100));
当我触发该网址时,应用程序会在Laravel-log中记录一些成功完成的事情:
[2017-04-30 11:38:44] local.INFO: Broadcasting [App\Events\NewNumber] on channels [pub-channel] with payload:
{
"number": 54,
"socket": null
}
我还运行了php artisan队列:listen
(队列驱动程序:数据库)。但数据库仍然是空的。。
我真的不知道我错过了什么...少了什么?!...
问题出在名称空间中
window.Echo.channel('pub-channel')
.listen('.NewNumber', (e) => {
console.info(e);
alert('Something happened');
console.log(e.number);
});
在NewNumber之前添加一个点,您可以在文档中了解更多信息:https://laravel.com/docs/5.3/broadcasting#namespaces
我可以在下面的代码中为添加事件侦听器,但不能添加到。 是不是因为twitter做了一些事情不让我这么做?有办法绕过它吗?
为了在频道上播放事件,我使用了laravel Echo、redis和socket io。 这是我的活动: 插座。io服务器我正在使用laravel echo服务器,下面是配置: 这是文件中的Echo结构: 运行laravel echo server和call event后,控制台中会显示以下日志,其中显示到频道的事件广播: 但Echo无法收听频道并发生事件。 问题是什么?
我使用Laravel成功地安装了WebSocket,并使用了自己的实现。现在我想切换到Laravel Echo和Laravel Echo服务器。但是,经过几个小时的尝试和阅读我能找到的每一份文档后,我确实需要进一步的帮助。 触发事件时发生的情况:队列工作程序根据需要处理事件:“已处理:照亮\广播\广播事件”。但是在laravel echo服务器控制台和客户端上都不会发生任何事情。 一些信息: >
我有一个时钟小部件Android应用程序,我现在正试图更新到API 26的要求。 到目前为止,我使用了一个后台服务,它在启动时在其方法a中注册,以接收系统广播,例如。然后,这项服务在屏幕关闭时暂停时钟,在屏幕重新打开时唤醒时钟,以节省电池。 在Oreo中,这类服务似乎不是一个选项,因为它必须在前台运行,并带有一个对用户没有意义的通知。此外,据我在文档中看到的,也帮不上我的忙,因为我没有发现可以将作
活动是: 路线/频道。php是: 在刀片文件中: 广播频道工作正常。但在私密频道里,这是行不通的。并且在控制台中没有显示任何错误 我使用拉威尔回声和推进器
我目前正在尝试编写一些JavaScript来获取已单击的类的属性。我知道要正确地执行此操作,我应该使用事件监听器。我的代码如下: 我希望每次点击其中一个类时都有一个警告框来告诉我该属性,但不幸的是,这并不起作用。有人能帮忙吗?