Laravel与socket.io回应

时间:2017-01-13 07:21:21

标签: laravel websocket socket.io laravel-5.3 laravel-echo

我想在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

2 个答案:

答案 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

可以帮助别人。

相关问题