Laravel Websockets从客户端接收消息

Fra*_*ost 7 php redis node.js socket.io laravel

我想使用websockets与laravel / node / redis建立一个基本的全局(无房间)聊天。

我遵循了本教程:http : //blog.nedex.io/laravel-5-1-broadcasting-events-using-redis-driver-socket-io/

从拉拉维尔发出事件没问题:我有这样的事情

event(new UserJoined('x Joined The Chat'));
Run Code Online (Sandbox Code Playgroud)

这是我的路线

Route::get('/', function () { ... });
Run Code Online (Sandbox Code Playgroud)

到目前为止,此方法运行良好。这是我的节点服务器:

redis.on('message', function(channel, message) {
  message = JSON.parse(message);

  io.emit(channel + ":" + message.event, message.data);
});
Run Code Online (Sandbox Code Playgroud)

最后是客户部分

socket.on('test-channel:App\\Events\\UserJoined', function(data) {
    console.log( 'User joined', data.username )
});
Run Code Online (Sandbox Code Playgroud)

我现在面临的问题是:当用户/客户端发出某些东西时,我可以执行php / laravell代码吗?还是只能为此使用node.js服务器?

例:

socket.emit('test-channel:App\\Events\\Message',
  {
    username:username
  }
);
Run Code Online (Sandbox Code Playgroud)

我希望不仅将消息发送给其他“ chatter”,而且还发送给我的php后端。

小智 0

您需要将 PHP 应用程序作为客户端连接到节点服务器。因此,您的 websocket php 客户端将作为单独的实例运行,例如: https: //www.piesocket.com/blog/php-websocket

或者您可以将 Node js 服务器连接到数据库并直接保存消息