Приложение real-time для чата — отличный пример того, как WebSocket можно революционизировать real-time интерактивное общение в Интернете. В этой статье мы рассмотрим создание простого приложения для чата с использованием Laravel и интеграцию WebSocket с использованием laravel-websockets
package для обеспечения интерактивного взаимодействия с пользователями.
Цели приложения
Мы создадим real-time чат-приложение со следующими функциями:
Мгновенная отправка и получение сообщений: пользователи могут мгновенно отправлять и получать сообщения, не обновляя страницу.
Список онлайн-пользователей: приложение отобразит список онлайн-пользователей и их статус чата.
Отправка изображений и файлов: пользователи могут обмениваться изображениями и файлами в чате.
Начало работы с установкой и настройкой
Для начала нам нужно установить laravel-websockets
package и настроить его для интеграции WebSocket с Laravel. Следуй этим шагам:
Установите laravel-websockets
package: Начните с установки package с помощью Composer.
composer require pusher/pusher-php-server
Опубликуйте файл конфигурации: после установки опубликуйте файл конфигурации, чтобы настроить параметры.
php artisan vendor:publish --tag=websockets-config
Выполнить migration: Создайте необходимые таблицы базы данных для WebSocket.
php artisan migrate
Запустить WebSocket сервер: Запустите WebSocket сервер для обработки real-time подключений .
php artisan websockets:serve
Создание пользовательского интерфейса
Мы создадим простой пользовательский интерфейс с использованием HTML, CSS и JavaScript для отображения списка сообщений, поля ввода и списка онлайн-пользователей.
<!-- resources/views/chat.blade.php -->
<div id="app">
<div class="chat-container">
<div class="chat-box">
<div class="chat-messages">
<div class="message" v-for="message in messages":key="message.id">
{{ message.user }}: {{ message.content }}
</div>
</div>
<div class="input-box">
<input v-model="newMessage" @keydown.enter="sendMessage" placeholder="Enter your message...">
</div>
</div>
</div>
</div>
Интеграция WebSocket и Broadcasting
Мы будем использовать Laravel Broadcasting для интеграции WebSocket с приложением.
Установить Pusher: установить pusher/pusher-php-server
package для использования Pusher в качестве Broadcasting драйвера.
composer require pusher/pusher-php-server
Настройка Broadcasting: в config/broadcasting.php
файле настройте драйвер и укажите свои Pusher учетные данные.
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
],
],
Создайте событие и транслируйте: создайте событие ChatMessageSent и транслируйте его, когда пользователь отправляет сообщение.
// app/Events/ChatMessageSent.php
public function broadcastOn()
{
return new Channel('chat');
}
Сценарий JavaScript: используйте JavaScript для прослушивания событий с сервера и обновления пользовательского интерфейса.
// resources/js/app.js
require('./bootstrap');
import Vue from 'vue';
import Chat from './components/Chat.vue';
const app = new Vue({
el: '#app',
components: {
Chat
}
});
Заключение
Выполнив это руководство, вы успешно создали real-time приложение для чата, используя WebSocket файлы Laravel. Пользователи могут мгновенно отправлять и получать сообщения, и вы видели, как WebSocket обеспечивается отзывчивое и интерактивное общение.