Angular2 + Laravel与实时和WebSockets

The*_*eal 15 node.js laravel angular

我构建了一个应用程序,我打算与Angular 2和laravel进行实时战斗.例如,你点击"攻击"按钮,你的对手就会看到他的生命实时下降.

我的应用程序构建:

前端: Angular 2

后端: PHP Laravel 5.2

现在我正在搜索和学习我的实时战斗组件,我看到了不同的指南和教程:

  1. https://www.codetutorial.io/laravel-5-and-socket-io-tutorial/
  2. http://4dev.tech/2016/02/creating-a-live-auction-app-with-angular-2-node-js-and-socket-io/

一个教程是关于如何使用Laravel 5和socket io.

第二一个是如何利用角2 NODS JS和插座IO.

当我说实时时,我的意思是两个用户都看到屏幕上发生的同样事情)

我的后端和前端是完全分开的,我在我的应用程序的任何地方都没有设置NodeJS.

两个用户都需要在我的应用程序中看到战斗期间发生的操作,并且需要通过我的laravel API并通过我的Angular 2战斗组件显示

我的问题是 -

什么是使用Angular2和Laravel 5.2的实时应用程序(似乎websockets)的最佳方法,以获得我想要实现的目标的结果?

怎么样?

dvl*_*lsg 4

在这种情况下,Laravel 只是模板化和提供客户端文件,并充当客户端和 socket.io 服务器之间的接口。它实际上并不充当 socket.io 服务器,我也不相信它可以。

所以,是的,您仍然需要一些东西(节点)来托管 socket.io 服务器,以便通过 PHP 或其他方式与客户端交互。就我个人而言,我会完全跳过 Laravel/PHP,只使用 Node 和 koa/express/whatever 来模板化您的客户端(html/js/css/etc)文件。对我来说感觉像是一个不必要的抽象。

下面的代码已经socket.blade.php连接到实际socket.io服务器,所以我不明白为什么通过 PHP/Laravel 的 HTTP POST 的额外开销是一个好主意。也许是安全性,但您也可以使用实际的 socket.io 服务器来处理这个问题。

var socket = io.connect('http://localhost:8890');
socket.on('message', function (data) {
    $( "#messages" ).append( "<p>"+data+"</p>" );
});
Run Code Online (Sandbox Code Playgroud)

  • 您答案中的示例与 Angular2 没有任何关系,我用它来显示所有数据。您的示例显示了 laravel 模板系统,我不以任何方式使用它。 (2认同)