Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 如何广播可以为每个用户专门定制的laravel事件_Ajax_Laravel_Events_Listener_Broadcasting - Fatal编程技术网

Ajax 如何广播可以为每个用户专门定制的laravel事件

Ajax 如何广播可以为每个用户专门定制的laravel事件,ajax,laravel,events,listener,broadcasting,Ajax,Laravel,Events,Listener,Broadcasting,我在每个用户屏幕上都有一个随机出售的产品网格。当其他用户购买产品时,如果该产品在其他用户屏幕上可见,我需要它淡出并加载到新产品中。考虑到产品网格是随机排序的,我如何才能向每个用户广播一个新产品,这对他们来说是独一无二的,即不会复制一个已经在他们的屏幕上出售的产品。此外,我仍然在使用Laravel5.2。以前的开发人员没有升级他们的版本,我现在无法更改 当用户购买产品并在屏幕上加载新产品时,这里是ajax函数 $(document).ready(function(){ $

我在每个用户屏幕上都有一个随机出售的产品网格。当其他用户购买产品时,如果该产品在其他用户屏幕上可见,我需要它淡出并加载到新产品中。考虑到产品网格是随机排序的,我如何才能向每个用户广播一个新产品,这对他们来说是独一无二的,即不会复制一个已经在他们的屏幕上出售的产品。此外,我仍然在使用Laravel5.2。以前的开发人员没有升级他们的版本,我现在无法更改

当用户购买产品并在屏幕上加载新产品时,这里是ajax函数

 $(document).ready(function(){
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
            $('form.buy-product-form').on('submit', (function (e) {
                e.preventDefault();
                var product_id = $(this).closest('.product').attr("id"); //new
                var element = $(this).closest('.product');
                $.ajax({
                    url: $(this).attr('action'),
                    type: 'POST',
                    data: {'id': product_id, 'all_ids': getProductsShown()},
                    dataType: 'json',
                    success: function (data) {
                        if(data.valid_funds) {
                            $(element).css('background-color', 'red');
                            $(element).fadeOut("1000", function () {
                                $(element).fadeIn("1000", function () {
                                    $(element).animate({backgroundColor: 'green', color: 'white'}, 1000);
                                    $(element).attr("id", data.id);
                                    $(element).find("#price").html(data.price);
                                    $(element).find("#quantity").html(data.quantity);
                                    $(element).find("#seller").html(data.seller);
                                    $(element).find("#total-price").html(data.price * data.quantity);
                                    $(element).find('form').attr("action", "/UoE/buy-product/" + data.id);
                                    $(element).css('background-color', 'white');
                                });
                            });

                            updatePlayerCapital(data.player_capital, data.total_price);
                            updatePlayerUtility(data.player_utility, data.marginal_utility);
                            updatePlayerPurchases(data.purchases);

                        }else if(data.void) {
                            $(element).css('background-color', 'red');
                            $(element).fadeOut("1000", function(){
                                $(element.remove());
                            });

                            updatePlayerCapital(data.player_capital, data.total_price);
                            updatePlayerUtility(data.player_utility, data.marginal_utility);
                            updatePlayerPurchases(data.purchases);

                        }else {
                            window.alert("You do not have enough funds!");
                        }
                    },
                    error: function () {
                            window.alert("Error, product may no longer exist");
                    }
                });
            }));
        });

嗯,我不能完全从你的代码中分辨出来,但是如果你有用户ID或用户名之类的东西,你能为每个UUID创建一个通道吗,然后在你需要发送“自定义”事件时;就通过那个私人频道发送

是的,这对我有用。Pusher的好处是您可以拥有无限的频道。所以我只是创建了一个自定义通道,每次需要触发用户特定的事件时,它都会在该特定通道上触发该事件。