प्रश्न शीर्षक थोड़ा भ्रमित हो सकता है, मैंने इसे समझाने के लिए अपनी पूरी कोशिश की।एनवी प्रसारण के लिए लारवेल इको दोहराने की सुनवाई घटना
मुझे laravel-echo-server
, redis
(क्यूइंग के लिए), और Laravel echo
सेट अप मिला है। मैं चाहता हूं कि एक इनपुट के माध्यम से एक संदेश भेजना, और पृष्ठ पर सभी के लिए संदेश फ़ीड अपडेट करना; अनिवार्य रूप से एक चैट रूम।
सबकुछ काम करता है, तथ्य यह है कि यह नरक के रूप में धीमा है, लेकिन मैं Laravel Echo
और Vue
पर नया हूं।
अगर मैंने एक संदेश भेजा है, तो यह ठीक है, लेकिन फिर जब मैं एक और संदेश भेजता हूं तो मुझे दो प्रतिक्रियाएं मिलती हैं। तीसरे संदेश को तीन प्रतिक्रियाएं भेजें और इसी तरह ...
मैं वास्तव में क्या गलत कर रहा हूं? मैंने socket.io
/laravel-echo-server
केवल एक बार चैनल से कनेक्ट किया है, और मेरा broadcast
केवल एक बार भेजा जा रहा है (चेक कतार कार्यकर्ता यह केवल अनुरोध को संसाधित कर रहा है), तो इसे तेजी से दोहराया जा रहा है?
यह मेरा app.js है:
const chatWindow = new Vue({
el: '#chatWindow',
data: {
messages: []
},
methods: {
sendMessage: function() {
this.$http.post('/chat', {message: this.message}).then((response) => {
window.Echo.channel('test-chat-channel')
.listen('MessageSent', (event) => {
console.log(event.message);
// this.messages.push(event.message);
});
}, (response) => {
// error callback
});
this.message = '';
}
},
props: ['message']
});
यह मेरा चैट दृश्य है:
<div id="chatWindow" class="col-sm-7">
<h1 class="text-center no-top">Chat</h1>
<div class="chat-window">
<ul>
<li v-for="message in messages">@{{ message }}</li>
</ul>
<div class="form-group">
<input title="Send Message" v-model="message" @keyup.enter="sendMessage" class="form-control" placeholder="Send message...">
</div>
</div>
</div>
बस मामले में वे यहाँ प्रासंगिक होते हैं मेरी मार्ग है:
Route::post('/chat', function (Request $request) {
event(new MessageSent($request->message));
});
,210
और मेरे घटना:
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class MessageSent implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;
public $message;
public function __construct($message)
{
$this->message = $message;
}
public function broadcastOn()
{
return new Channel('test-chat-channel');
}
}
मुझे लगता है कि आप यहां कुछ हो सकते हैं। मुझे लगता है कि मुझे क्या करना चाहिए, श्रवण विधि को अलग करना है, और सफल अनुरोध के लिए प्रतिक्रिया कॉलबैक में नहीं है ... शायद यह समस्या का कारण बन रहा है - मुझे वास्तव में प्रतिक्रिया कॉलबैक की आवश्यकता नहीं है, केवल एक त्रुटि कॉलबैक है, और सदस्यता से बचने के अनुरोध के बाहर घटना को सुनने के लिए। इसके लिए धन्यवाद, मैं इसे एक शॉट दूंगा और आपको बता दूंगा! –
@ ए। एप्पलबी यह भी मेरे लिए संभावित लग रहा है। –
@ ए। एप्पलबी यह कैसा चल रहा है? क्या आप इसे हल कर चुके थे? क्या मैं मदद कर सकता हूँ? –