Laravel 与 socket.io 的回声
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/41629328/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel echo with socket.io
提问by Parth Vora
I want to listen for server side event on javascript side. I found this package for that:
我想在 javascript 端监听服务器端事件。我为此找到了这个包:
https://github.com/tlaverdure/laravel-echo-server
https://github.com/tlaverdure/laravel-echo-server
I have already read all if this so many times:
我已经读了这么多遍了:
https://laravel.com/docs/5.3/events
https://laravel.com/docs/5.3/events
https://laravel.com/docs/5.3/broadcasting
https://laravel.com/docs/5.3/broadcasting
https://laravel.com/docs/5.3/notifications
https://laravel.com/docs/5.3/notifications
So far I have done this:
到目前为止,我已经这样做了:
Controller action:
控制器动作:
broadcast(new NewVote());
event(new NewVote()); // Also tried this
"NewVote" Event class:
“NewVote”事件类:
public function broadcastOn()
{
return new Channel('new-vote');
}
Javascript:
Javascript:
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);
});
laravel-echo-server.json
laravel-echo-server.json
{
"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": ""
}
Already this commands are running:
此命令已经在运行:
laravel-echo-server start
php artisan queue:work
php artisan queue:listen
gulp watch
All I'm expecting a console massage when, I fire the event. But I'm not getting anything on the console.
当我触发事件时,我期待控制台按摩。但我没有在控制台上得到任何东西。
Let me know if any other information needed.
如果需要任何其他信息,请告诉我。
Note: My socket.io server is running successfully without any error.
注意:我的 socket.io 服务器运行成功,没有任何错误。
Thanks,
谢谢,
Parth Vora
帕斯沃拉
回答by Eelke van den Bos
Configuring Echo took me a while, but I found the client side configuration to contain a confusing default event namespace.
配置 Echo 花了我一段时间,但我发现客户端配置包含一个令人困惑的默认事件命名空间。
Try configuring the Echo client side library as following:
尝试按如下方式配置 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'
});
So when firing an event like so event(new \Hello\World\NewVote())
, make sure Echo is configured with the namespace Hello.World
因此,当触发这样的事件时event(new \Hello\World\NewVote())
,请确保使用命名空间配置 EchoHello.World
Cheers!
干杯!
回答by Parth Vora
Don't know what was the issue. But finally, I make it working.
不知道是什么问题。但最后,我让它工作。
I also created a small demo which illustrates the use of Laravel echo with socket.io using laravel-echo-server (https://github.com/tlaverdure/laravel-echo-server).
我还创建了一个小演示,它说明了使用 laravel-echo-server ( https://github.com/tlaverdure/laravel-echo-server)在 socket.io 中使用 Laravel echo 。
https://github.com/xparthxvorax/Larevel-echo-with-socket.io
https://github.com/xparthxvorax/Larevel-echo-with-socket.io
Might help someone.
可能会帮助某人。