Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लारवेल चैट में लंबे समय से मतदान:डिव खुद को अपडेट क्यों नहीं कर रहा है?

मैं जो देखता हूं, मुझे लगता है कि अनंत while लूप यहाँ समस्या है।

PHP और सॉकेट

यदि आप NodeJS का उपयोग नहीं कर सकते हैं, तो सॉकेट के साथ PHP आज़माएं। इसके लिए बहुत अच्छा काम करना चाहिए!

सुधार

आपने कहा कि आप सुधार की तलाश में हैं। ये रहे।
इसके अलावा मैं सर्वर से प्राप्त डेटा को देखने के लिए बाइंड करने के लिए एंगुलर का उपयोग करूंगा।

दृश्य फ़ाइल

<html>
    <head>
        <title></title>
        {{ HTML::script('//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js') }}
        <style>
            #chat {
                width: 300px;
            }
            #input {
                border: 1px solid #ccc;
                width: 100%;
                height: 30px;
            }
            #messages {
                padding-top: 5px;
            }
            #messages > div {
                background: #eee;
                padding: 10px;
                margin-bottom: 5px;
                border-radius: 4px;
            }
        </style>
    </head>
    <body>
        <div id="chat">
            <input id="input" type="text" name="message" value="">
            <div id="messages">
            </div>
        </div>

        <script>
            var $messagesWrapper = $('#messages');

            // Append message to the wrapper,
            // which holds the conversation.
            var appendMessage = function(data) {
                var message = document.createElement('div');
                message.innerHTML = data.body;
                message.dataset.created_at = data.created_at;
                $messagesWrapper.append(message);
            };

            // Load messages from the server.
            // After request is completed, queue
            // another call
            var updateMessages = function() {
                var lastMessage = $messagesWrapper.find('> div:last-child')[0];
                $.ajax({
                    type: "POST",
                    url: '{{ url('chat/refresh') }}',
                    data: {
                        from: ! lastMessage ? '' : lastMessage.dataset.created_at
                    },
                    success: function(messages) {
                        $.each(messages, function() {
                            appendMessage(this);
                        });
                    },
                    error: function() {
                        console.log('Ooops, something happened!');
                    },
                    complete: function() {
                        window.setTimeout(updateMessages, 2000);
                    },
                    dataType: 'json'
                });
            };

            // Send message to server.
            // Server returns this message and message
            // is appended to the conversation.
            var sendMessage = function(input) {
                if (input.value.trim() === '') { return; }

                input.disabled = true;
                $.ajax({
                    type: "POST",
                    url: '{{ url('/chat') }}',
                    data: { message: input.value },
                    success: function(message) {
                        appendMessage(message);
                    },
                    error: function() {
                        alert('Ooops, something happened!');
                    },
                    complete: function() {
                        input.value = '';
                        input.disabled = false;
                    },
                    dataType: 'json'
                });
            };

            // Send message to the servet on enter
            $('#input').on('keypress', function(e) {
                // Enter is pressed
                if (e.charCode === 13) {
                    e.preventDefault();
                    sendMessage(this);
                }
            });

            // Start loop which get messages from server.
            updateMessages();
        </script>
    </body>
</html>

मार्ग

Route::post('chat/refresh', function() {
    $from = Input::get('from', null);

    if (is_null($from)) {
        $messages = Message::take(10);
    } else {
        $messages = Message::where('created_at', '>', $from);
    }

    return $messages->latest()->get();
});

Route::post('chat', function() {
    return Message::create(['body' => Input::get('message')]);
});

Route::get('chat', function() {
    return View::make('chat');
});

मॉडल

class Message extends Eloquent
{

    protected $fillable = ['body'];
}

मुझे लगता है, कोड बहुत सीधा है... टिप्पणियों को सब कुछ समझा देना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - एक ही तालिका से पंक्ति के आधार पर योग स्तंभ मान(रों)

  2. 60 मिलियन प्रविष्टियाँ, एक निश्चित महीने से प्रविष्टियाँ चुनें। डेटाबेस का अनुकूलन कैसे करें?

  3. MySQL में पंक्तियों को लाने के लिए क्वेरी का चयन करें

  4. मैं तैयार पीडीओ स्टेटमेंट का उपयोग करके ORDER BY params कैसे सेट करूं?

  5. PHP में दूरस्थ MySQL डेटाबेस को कैसे कनेक्ट करें