1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/nxs-PHPWebIM

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 7.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 09:28 a81da48

PHPWebIM

Использование PHP+Swoole для реализации веб-приложения для мгновенного обмена сообщениями. Онлайн-демонстрация: http://webim.swoole.com/.

  • Полностью асинхронный неблокирующий сервер, способный одновременно поддерживать сотни тысяч TCP-соединений в режиме онлайн.
  • Поддержка всех браузеров/клиентов/мобильных устройств на основе WebSocket+flash_websocket.
  • Поддерживает личные сообщения, групповые чаты и другие функции.
  • Сохраняет историю чата навсегда.
  • Использует Server PUSH для обновления контента в реальном времени, включая изменения состояния, вход/выход из системы и отправку сообщений.
  • Планируется поддержка отправки файлов (разработка продолжается).
  • Планируется поддержка управления всеми онлайн-пользователями и группами через веб-интерфейс (разработка продолжается).

Установка

Расширение Swoole:

pecl install swoole

Swoole Framework:

composer install

Запуск

Поместите каталог client в конфигурацию виртуального хоста Nginx/Apache, чтобы сделать index.html доступным. Измените IP и порт в client/config.js на соответствующие значения.

php webim_server.php

Подробное описание процесса установки:

  1. Установите Composer (инструмент для управления зависимостями 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.

  1. Выполните команду composer install в каталоге проекта PHPWebIM. Если процесс установки занимает слишком много времени, выполните команду:
composer install --prefer-dist
  1. Настройте Nginx или Apache (в этом руководстве не используется Web AppServer, предоставляемый swoole_framework):

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>
  1. Измените настройки в файле PHPWebIM/config.php:
$config['server'] = array(
    'host' => '19.0.3.245',
    'port' => '9503',
);

Здесь server — это IP-адрес и порт сервера WebIM (WebSocket-сервер), которые могут быть изменены в зависимости от вашей конфигурации.

  1. Измените настройки в PHPWebIM/client/config.js:
var webim = {
    'server' : 'ws://19.0.3.245:9503'
}

Сервер соответствует настройке в пункте 4, а ws://IP:порт — это адрес и порт вашего сервера.

  1. Запустите сервер WebSocket:
php PHPWebIM/webim_server.php
  1. Свяжите host с окном чата:
vi /etc/hosts

Добавьте строку:

127.0.0.1 im.swoole.com

Откройте в браузере: http://im.swoole.com.

Быстрое ознакомление с архитектурой проекта

  1. Структура каталогов:
+ 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 // Каталог зависимостей
  1. Формат данных для связи между Socket Server и Socket Client:

Например, при входе в систему клиент отправляет данные:

{"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 используется как в клиенте, так и на сервере для обработки обратных вызовов.

  1. Необходимо прояснить несколько видов протоколов или отношений между службами:

HTTP-протокол: протокол передачи гипертекста. Односторонняя связь, ожидающая ответа после запроса клиента.

Протокол WebSocket: это новый протокол HTML5, который реализует полнодуплексную связь между браузером и сервером. И серверный порт, и клиентский порт могут отправлять и получать данные.

Веб-сервер: в этом проекте можно использовать основанный на Swoole App Server в качестве веб-сервера или традиционный nginx/apache в качестве веб-сервера.

Socket-сервер: сервер, к которому подключаются клиенты WebSocket браузера, и реализация протокола WebSocket на PHP, предоставленная swoole_framework.

WebSocket Client: все браузеры, поддерживающие HTML5, поддерживают объект WebSocket. Если поддержка отсутствует, предоставляется версия flash.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/nxs-PHPWebIM.git
git@api.gitlife.ru:oschina-mirror/nxs-PHPWebIM.git
oschina-mirror
nxs-PHPWebIM
nxs-PHPWebIM
master