PHPWebIM
Использование PHP+Swoole для реализации веб-приложения для мгновенного обмена сообщениями. Онлайн-демонстрация: http://webim.swoole.com/.
Установка
Расширение Swoole:
pecl install swoole
Swoole Framework:
composer install
Запуск
Поместите каталог client в конфигурацию виртуального хоста Nginx/Apache, чтобы сделать index.html доступным. Измените IP и порт в client/config.js на соответствующие значения.
php webim_server.php
Подробное описание процесса установки:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Примечание: если вы не добавили интерпретатор PHP в переменную среды PATH, вам необходимо это сделать. Поскольку первая строка файла composer — #!/usr/bin/env php, её нельзя изменить. Для получения более подробной информации о Composer см. http://blog.csdn.net/zzulp/article/details/18981029.
composer install --prefer-dist
Nginx:
server {
listen 80;
server_name im.swoole.com;
index index.shtml index.html index.htm index.php;
root /path/to/PHPWebIM/client;
location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
access_log /Library/WebServer/nginx/logs/im.swoole.com access;
}
Apache:
<VirtualHost *:80>
DocumentRoot "path/to/PHPWebIM/client"
ServerName im.swoole.com
AddType application/x-httpd-php .php
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
DirectoryIndex index.php
</Directory>
</VirtualHost>
$config['server'] = array(
'host' => '19.0.3.245',
'port' => '9503',
);
Здесь server — это IP-адрес и порт сервера WebIM (WebSocket-сервер), которые могут быть изменены в зависимости от вашей конфигурации.
var webim = {
'server' : 'ws://19.0.3.245:9503'
}
Сервер соответствует настройке в пункте 4, а ws://IP:порт — это адрес и порт вашего сервера.
php PHPWebIM/webim_server.php
vi /etc/hosts
Добавьте строку:
127.0.0.1 im.swoole.com
Откройте в браузере: http://im.swoole.com.
Быстрое ознакомление с архитектурой проекта
+ PHPWebIM
|- webim_server.php //WebSocket-протокол сервера
|- config.php // Конфигурация swoole
|+ swoole.ini // Конфигурация WebSocket
|+ client
|+ static
|- config.js // Конфигурация клиента WebSocket
|- index.html // Страница входа
|- main.html // Главная страница чата
|+ data // Данные выполнения
|+ log // Журнал swoole и журнал WebIM
|+ src // Каталог файлов WebIM
|+ Store
|- File.php // По умолчанию используется память tmpfs (linux /dev/shm) для хранения данных, если это не linux, измените вручную $shm_dir
|- Redis.php // Хранит данные чата в Redis
|- Server.php // Класс, наследующий реализацию WebSocket, завершает некоторые бизнес-функции
|+ vendor // Каталог зависимостей
Например, при входе в систему клиент отправляет данные:
{"cmd":"login","name":"xdy","avatar":"http://tp3.sinaimg.cn/1586005914/50/5649388281/1"}
При успешном входе сервер отвечает данными:
{"cmd":"login", "fd": "31", "name":"xdy","avatar":"http://tp3.sinaimg.cn/1586005914/50/5649388281/1"}
Можно видеть, что атрибут cmd используется как в клиенте, так и на сервере для обработки обратных вызовов.
HTTP-протокол: протокол передачи гипертекста. Односторонняя связь, ожидающая ответа после запроса клиента.
Протокол WebSocket: это новый протокол HTML5, который реализует полнодуплексную связь между браузером и сервером. И серверный порт, и клиентский порт могут отправлять и получать данные.
Веб-сервер: в этом проекте можно использовать основанный на Swoole App Server в качестве веб-сервера или традиционный nginx/apache в качестве веб-сервера.
Socket-сервер: сервер, к которому подключаются клиенты WebSocket браузера, и реализация протокола WebSocket на PHP, предоставленная swoole_framework.
WebSocket Client: все браузеры, поддерживающие HTML5, поддерживают объект WebSocket. Если поддержка отсутствует, предоставляется версия flash.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )