• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • Веб сокеты или hello world по новому

Веб сокеты или hello world по новому

04.05.2017 13:58
lnroma 3 533 Источник
PHP*
Я не программист, Я любить заюзать готовые решение и получить результат в кратчайшие сроки. Сегодня, Я вам расскажу как я быстро поднял чатик на веб сокетах. И конкурс о сиськах в Московских пробках.
И так «hello world» с использованием ratchet socketo.me кому интересно прошу под кат

1. И так начнём с того что установим composer и создадим директорию с проэктом к примеру myProject.
2. Создаём composer.json с содержимым
{
    "autoload": {
        "psr-0": {
            "MyApp": "src"
        }
    },
    "require": {
        "cboden/ratchet": "0.3.*"
    }
}

И выполняем composer install
3. Создадим директорию src/MyApp и обработчик Chat
<?php
namespace MyApp;

require_once('Db.php');

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
use MyApp\Db;

class Chat implements MessageComponentInterface
{
    protected $clients;

    public function __construct()
    {
        $this->clients = new \SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn)
    {
        // устанавливаем новое соеденение
        $this->clients->attach($conn);
    }

    // событие отправки сообщения в сокет
    public function onMessage(ConnectionInterface $from, $msg)
    {  
        // отправляем сообщение всем тем кто присоеденился
        foreach ($this->clients as $client) {
            $client->send($msg);
        }
    }

    // закрытия соеденения
    public function onClose(ConnectionInterface $conn)
    {
        $this->clients->detach($conn);
    }
    
    // обработка ошибок
    public function onError(ConnectionInterface $conn, \Exception $e)
    {
        $conn->close();
    }
}


4. Теперь создадим директорию bin сервер server.php

<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;

require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
    new HttpServer( // запускаем http сервер
        new WsServer( // websocket сервер
            new Chat() // обработчик событий
        )
    ),
    8080,
    '127.0.0.1'
);

$server->run();


5. Для соединения страницы с сокетом достаточно вызова следующей функции js
var conn = new WebSocket('ws://127.0.0.1:8080');

для того что бы отловить сообщения от сокета на необходимо по вешать слушателя на сообщение onmessage последнего
conn.onmessage = function(e) {
     console.log(e.data);
}

в data нам придёт ответ отправленный сервером в данном случае строка
conn.send('hello world')
так мы можем отправить сообщение на сервер.
6. Запуск этого добра:
— Запускаем сервер php bin/server.php
— Открываем страничку и готово

В качестве заключения приведу ссылки:
1. Чатик на сокетах sidimvprobke.com
2. git репазиторий github.com/lnroma/sidimvprobke
3. конкурс — конкурс с сиськами (тест на сообразительность, ведь завтра пятница)

не сложно правда ли?
Поделиться с друзьями
-->

Комментарии (3)


  1. ishef
    04.05.2017 17:14
    #10203604
    +2

    Не могу определить что хуже — грамматика или смысл.


  1. vlreshet
    04.05.2017 17:15
    #10203606

    Ээээ… ммм… и?


  1. rapita
    04.05.2017 17:30
    #10203622
    +1

    Это быстрый перевод Creating Your First Application из документации?

МЕТКИ

  • Хабы
  • Теги

php

WebSockets

server

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • Модные направления в разработке

    • 16.05.2017 15:50

    Веб сокеты или hello world по новому

    • 04.05.2017 13:58

    Информационая безопасность в сфере телекома на примере Megafon'а -5

    • 17.10.2016 14:45

    GUI для php, или скрещиваем написанное расширение с скриншотером +2

    • 04.10.2016 23:48

    Пишем расширение с помощью библиотеки php-cpp для php7 +18

    • 01.10.2016 21:46

    Разработка addon firefox, или ещё один скриншотер с помощью webExtensions и addon sdk

    • 26.09.2016 13:31

    Разработка расширения для firefox, или мой первый опыт, на примере скриншотера +18

    • 23.09.2016 18:07

    Системные скрипты на php для linux, пишем скриншотер +2

    • 22.09.2016 14:10

    Разработка сервера на php и системных скриптов -2

    • 17.09.2016 15:51

    В России заблокировали сайты PornHub и YouPorn

    • 14.09.2016 15:43

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
05:08

Память о глубине: топим литиевые аккумуляторы на 1500 м +50

05:27

Вайбанутым нет покоя +40

07:49

Value Object: как победить примитивную одержимость без DDD +37

07:01

Пять книг о российских технологических компаниях +23

08:00

Декабрьская пятерка мини-ПК: компактные, мощные, необычные +21

09:20

Изящные, ненормальные и удивительные алгоритмы на C +20

08:42

Как оптимизировать код WebAssembly при помощи встраивания функций и деоптимизации +20

02:01

НАЙС.ОС — как Не пересборка RHELL оказалась RHEL +20

06:31

Первенец Acer — миниатюрный ноутбук AcerNote 300C +19

10:01

8 лучших RDP-клиентов 2025 года +18

09:01

Коллекция полезных CSS фишек, которые вы редко используете +17

00:23

Google Maps для биржевого стакана: пишем визуализатор данных Московской биржи на Python +17

07:00

Client Hints: разбор технологии, которая заменит User-Agent +15

08:50

Стилизация, часть 3. Превращение в стиль +14

07:05

История контактных линз и то, как я сам стал “линзариком”. Часть 2 +14

08:00

Под капотом пул-реквеста: как мы ускоряли индексирование кода для удобной навигации при ревью +13

13:01

Мороз по коже: LLM может оценить ваш код, а ИИ-компании — использовать это в своих целях +12

08:00

Это 4 наших легендарных Dev & DevOps-факапа +12

09:59

Как приземляться в Top Gun: проверено реверс-инжинирингом +11

09:09

Атрибуция кибератак: почему иногда «не знаю» — единственный честный ответ +11

01:02

Как молодой девушке уехать на Яндекс.Такси в промзону и пропасть среди гаражей +224

13:01

Как я обнаружил скрытый микрофон в китайском NanoKVM +122

07:44

Почему учителя бегут из школ, а дети не хотят учиться — и как я это исправляю +82

09:01

Firefox — лучший мобильный браузер +79

13:33

Вход — бесплатно, выход — по подписке: разбор реального скама +60

13:03

Меня обвинили в том, что я — нейросеть +57

08:00

Дешевых ПК и ноутбуков больше не будет: готовимся к 2026 году +34

07:59

Синдром бесконечного окна: почему 1 миллион токенов в LLM не решает ваши проблемы (пока) +33

10:05

Это есть в Word, но мало кто об этом знает. Лайфхаки для продвинутого использования +31

04:57

Перетягивание замороженных активов с ЕС, а также космические дата-центры Илона Маска +28

19:17

Шпаргалка по настройке VPS на Debian/Ubuntu (2025) +22

07:30

ИИ-агент: менеджер, которого у вас нет. Реальный кейс, как заменять манагеров в пиковые часы на Avito +22

05:16

Как я уже 5 лет создаю свою макрос-клавиатуру. И почему не бросил этот проект +22

10:32

Как подружить аудиторию старшего поколения с ИИ: результаты исследования +18

05:42

Лучшие практики по настройке конфигураций в Kubernetes +18

11:58

Как мы учили поиск понимать контекст: практическое руководство Купера для маркетплейсов +17

11:25

Где дешевле и безопаснее хранить данные: сравниваем жесткие диски, магнитные ленты, облака и оптику +17

11:19

Гайд: Как прострелить ноги unsafe кодом в C# +17

07:33

Как мы запускали «марсоход» на PostgreSQL: автоматизация кластеров в изолированной среде крупной компании +17

18:05

Яндекс! Тебе было мало двух списаний в месяц за одну подписку? Теперь ты списываешь за отключенные подписки??? +16

22:11

Пожалуйста, почините найм +168

11:20

Тайная жизнь оконного стекла: история, технологии и немного олова +51

16:43

Если вы эксперт 45+ и вдруг решили сменить работу +48

09:01

В GitHub Actions, пожалуй, худший пакетный менеджер +47

13:01

Дело Solar Sunrise: кто «ломал Пентагон» в феврале 1998 года? +45

16:05

Телевизионные передачи 90-х +43

08:00

Станет ли FreeBSD 15.0 новым шагом в развитии свободной ОС +41

15:16

Ретроспектива 2025: Денежный дождь закончился +31

05:00

Минимальный набор практик для микросервиса +28

14:55

Абсурд прогресса. Почему «высокий уровень жизни» не продлевает годы, а крадет их? +26

10:28

Я доверил деньги нейросети, чтобы не сидеть у монитора 24/7: результаты эксперимента с алготрейдингом +19

19:36

Ночь, телескоп, ИИ, комета: анализ спектра 3I/ATLAS с собственным Python-pipeline +18

17:25

Мы больше не увидим BSoD на вывесках и табло +13

07:00

[Resource Quota] А что, если ваш финансовый потолок — это не баг, а защита от перегрева? +13

13:20

Самобеглый чемодан +11

12:45

Как Европа развивает свою open source-экосистему — и какие новые возможности по кооперации появляются у стран БРИКС +11

12:40

Эта музыка будет вечной: микросервисы против монолита, camelCase против snake_case и другие неугасающие споры в ИТ +7

12:15

Полиграф: иллюзия точности. Как метод без научного фундамента нарушает права и манипулирует законодательством +7

13:30

Новогодний IT-челлендж для разработчиков: сможете расшифровать сообщение? +6

03:50

Ученые обнаружили скрытые ускорители частиц в околоземной космической плазме +6

ОБСУЖДАЕМОЕ

  • Пожалуйста, почините найм +168

    • 352   59000

    Почему учителя бегут из школ, а дети не хотят учиться — и как я это исправляю +82

    • 269   69000

    Как молодой девушке уехать на Яндекс.Такси в промзону и пропасть среди гаражей +224

    • 232   37000

    Если вы эксперт 45+ и вдруг решили сменить работу +48

    • 188   21000

    Меня обвинили в том, что я — нейросеть +57

    • 149   13000

    Абсурд прогресса. Почему «высокий уровень жизни» не продлевает годы, а крадет их? +26

    • 119   12000

    Как я обнаружил скрытый микрофон в китайском NanoKVM +122

    • 118   114000

    Firefox — лучший мобильный браузер +79

    • 90   27000

    Я доверил деньги нейросети, чтобы не сидеть у монитора 24/7: результаты эксперимента с алготрейдингом +19

    • 89   54000

    Ретроспектива 2025: Денежный дождь закончился +31

    • 67   14000

    Мы больше не увидим BSoD на вывесках и табло +13

    • 63   35000

    C++, Rust и цветовая дифференциация воротничков +7

    • 46   5700

    [Resource Quota] А что, если ваш финансовый потолок — это не баг, а защита от перегрева? +13

    • 46   8000

    Шпаргалка по настройке VPS на Debian/Ubuntu (2025) +22

    • 40   13000

    Эта музыка будет вечной: микросервисы против монолита, camelCase против snake_case и другие неугасающие споры в ИТ +7

    • 35   8200
  • Главная
  • Контакты
© 2025. Все публикации принадлежат авторам.