Laravel: создание приложения реального времени с использованием Angular

Я начинаю работать с angular и очарован возможностями двунаправленной привязки данных и его методом $http, который позволяет мне сохранять изменения в моей базе данных mysql без обновления страницы.

Еще одна вещь, которой я в настоящее время очарован, — это возможность работы в реальном времени между несколькими клиентами, использующими firebase. Здесь все клиенты обновляются в РЕАЛЬНОМ ВРЕМЕНИ, когда база данных получает какие-либо изменения. Я, вероятно, хотел бы использовать firebase, но мне пришлось бы полностью отказаться от Laravel и MySql в качестве слоя сохранения, который я хотел бы сохранить на данный момент, поскольку мое приложение уже работает в Laravel, просто не в режиме реального времени.

Как мне создать приложение реального времени, которое обновляет каждого клиента без обновления представления в Laravel с использованием MySQL и Angular?

Если я не ошибаюсь, Pusher и PubNub обеспечивают это необходимое открытое соединение с сервером с помощью веб-сокетов, поэтому, когда серверу есть чем поделиться, angular теперь будет это отображать.

Поскольку я хотел бы использовать Laravel и MySQL в качестве уровня сохраняемости, я не уверен, как лучше всего это сделать. Я даже не уверен, правильно ли я понял все, что написал выше, так как я новичок в приложениях angular и real-time.

Какими будут следующие необходимые шаги, чтобы получить некоторые возможности реального времени в приложении PHP/MySQL?


person LoveAndHappiness    schedule 19.07.2014    source источник


Ответы (2)


Решение вашей проблемы:

1º - открыть соединение через веб-сокет с веб-сервером и подписаться на канал, после чего отправить данные на ваш сервер с помощью ajax учебник углового толкателя

2º - На стороне сервера вы получаете данные, сохраняете их в своей базе данных и отправляете «ПУБЛИКАЦИЯ» на соответствующий канал на сервер веб-сокетов библиотека, полезная для этого

3º - Через подписку получает данные в режиме реального времени

Pusher.subscribe('channel', 'event', function (item) {
    // code
});
person Claudivan    schedule 19.07.2014
comment
Вы бы сказали, что приложения реального времени возможны тремя способами: 1. Node.js + Socket.io // или // 2. AngularJS + Firebase // или // 3. Laravel + Angular + Pusher/PubNub - person LoveAndHappiness; 19.07.2014
comment
Конечно, если вы хотите контролировать данные, которые будет отправлять клиент, вы используете 3-й способ (для самых больших приложений) и 1-й (для небольших приложений), если вам не нужны отправленные данные и вы хотите сохранить данные, используйте 2-й способ. Я предпочитаю 3-й :] - person Claudivan; 19.07.2014
comment
@Claudivan Вы также можете использовать второй вариант для больших приложений. Очень низкая производительность с laravel + Pusher/PubSub. NodeJS + Redis — это очень высокая производительность, тогда как Laravel - person Rahul_Dabhi; 23.03.2016

Недавно у меня была похожая проблема, и я, наконец, использовал публикацию/подписку Redis Redis. Вы можете хранить данные в канале, а затем подписываться на любые изменения. Когда что-то изменится, вы можете отправить его в Pusher, который затем отправит его клиентам.

Я также рекомендую рассмотреть Node.js и Socket.io, так как вы можете добиться очень хорошей производительности без стороннего сервиса, и даже если у вас нет опыта работы с Node, вы можете найти очень хорошие примеры на Socket.IO как написать приложение.

Для Redis есть хорошая библиотека для PHP под названием Predis, а также есть клиент Redis Node, так что вы можете смешать все это вместе.

person schrink    schedule 19.07.2014