Как отправить уведомление на контроллере (не на просмотр) подключенным клиентам с помощью romainrg / ratchet_client? - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу получать уведомления в режиме реального времени для моего Beauty and Wellness POS-типа приложения, в котором пользователь (менеджер филиала магазина) кодирует транзакции, совершенные клиентом в его / ее филиале. Итак, я искал и нашел около Web Socket вещь и позже, Ratchet . Я ознакомился с демонстрацией того, как создать простое приложение для чата на socketo.me . Наконец я нашел romainrg ratchet_client . Это показывает, что подключенные клиенты могут отправлять сообщения через веб-сокеты с помощью веб-браузера, просто записав какое-то сообщение в поле ввода и указав, какой идентификатор пользователя пользователь хочет отправить в своем сообщении. С моей стороны, если я собираюсь интегрировать это, мне придется вручную отправлять уведомления для каждого пользователя в пользовательском интерфейсе.

Логика c, которую я хочу, чтобы мое приложение выполняло, заключается в том, что если менеджер филиала вошел в мое приложение, будут загружены уведомления магазина, назначенного ему / ей в базе данных, и будут сохранены предстоящие уведомления (например, когда заказанный клиент онлайн) в базе данных и будет добавляться автоматически где-то в пользовательском интерфейсе.

Я создал Booking.php контроллер для обработки заказов клиентов. Теперь я хочу отправлять уведомления туда, где заказал филиал магазина. Я просто не могу понять, как отправлять уведомления, когда create_booking запускается через веб-сокеты.

Это Booking.php.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Booking extends CI_Controller
{

function __construct(){
    parent::__construct();

    $this->load->model(array(
        'Booking_model' => 'booking',
        'Notification_model' => 'notification'
    ));
}

public function create_booking(){

    // Function to trigger send_booking_notification function
    // that will notify store manager if customer booked online

    $data = array(
        'customer_id' => $this->input->post('customer_id'),
        'customer_name' => $this->input->post('customer_name'),
        'branch_id' => $this->input->post('branch_id'),
        'service_id' => $this->input->post('service_id'),
        'service_name' => $this->input->post('service_name'),
        'date' => date('Y-m-d', strtotime($this->input->post('date'))),
        'time' => $this->input->post('time'),
        'remarks' => $this->input->post('remarks') 
    );

    $result = $this->booking->create_booking($data);

    if($result === 'success'){
        $this->insert_notification($data);
        $this->send_booking_notification($data);
    }

    echo $result;
}

public function send_booking_notification($data){
    //TODO: implement push notification using web socket
}

public function insert_notification($data){
    // Saves notification to database
    $this->notification->insert_notification($data);
}

}

Может кто-нибудь помочь, пожалуйста? Из-за этого я выдергивал свои волосы 3 дня подряд. Я был бы очень признателен, если бы вы мне помогли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...