我想在javascript端监听服务器端事件。我找到了这个包:
https://github.com/tlaverdure/laravel-echo-server
如果这么多次,我已经阅读了所有内容:
https://laravel.com/docs/5.3/events
https://laravel.com/docs/5.3/broadcasting
https://laravel.com/docs/5.3/notifications
到目前为止,我已经这样做了:
控制器操作:
Mapper.Initialize(cfg =>
{
cfg.CreateMap<SourceItem, DestItem>()
.ForMember(d => d.ShipsTo, o => o.MapFrom(src => new MyCollection(src.ShipsTo)));
});
“NewVote”活动类:
broadcast(new NewVote());
event(new NewVote()); // Also tried this
使用Javascript:
public function broadcastOn()
{
return new Channel('new-vote');
}
laravel回波-server.json
import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'socket.io',
host: 'http://assessment.local:6001'
});
window.Echo.channel('new-vote')
.listen('NewVote', (e) => {
console.log(e);
});
此命令已在运行:
{
"appKey": "0p4o9t942ct15boc4nr8tjb178q29fdmlcat8c1p1s51i2pbq9nmtjud94t4",
"authHost": null,
"authEndpoint": "/broadcasting/auth",
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": "assessment.local",
"port": "6001",
"referrers": [],
"socketio": {},
"sslCertPath": "",
"sslKeyPath": ""
}
所有我都期待一个控制台按摩,我开火了。但我在控制台上没有得到任何东西。
如果需要任何其他信息,请告诉我。
注意:我的socket.io服务器运行成功,没有任何错误。
谢谢,
Parth Vora
答案 0 :(得分:3)
配置Echo花了我一些时间,但我发现客户端配置包含一个令人困惑的默认事件命名空间。
尝试按如下方式配置Echo客户端库:
import Echo from "laravel-echo"
window.Echo = new Echo({
namespace: 'Base.Event.Namespace', //defaults to App.Event
broadcaster: 'socket.io',
host: 'http://assessment.local:6001'
});
因此,当触发类似event(new \Hello\World\NewVote())
的事件时,请确保Echo配置了命名空间Hello.World
干杯!
答案 1 :(得分:2)
不知道是什么问题。但最后,我让它发挥作用。
我还创建了一个小型演示,演示了如何使用laravel-echo-server(https://github.com/tlaverdure/laravel-echo-server)在socket.io中使用Laravel echo。
https://github.com/xparthxvorax/Larevel-echo-with-socket.io
可以帮助别人。