• Главная
  • Контакты
Подписаться:
  • 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:28

Мне надоело искать ошибки глазами — я создал бесплатный аудитор для 1С +15

08:23

Новая эра: нагрузочное тестирование UI‑микросервисов +13

08:02

Включаем EPA в FreeTDS и go-mssqldb: приключение на 5 минут +12

06:40

Как мы сделали автогенерацию документации для CI/CD из комментариев в коде +12

08:01

Короткий промпт ≠ дешёвый промпт: как оптимизация ломает prefix cache в LLM-агентах +11

07:51

Перспективы термоядерных энергетических реакторов: краткий патентный анализ +11

05:07

ИИ-слоп убивает онлайн-сообщества +11

07:00

Видели, как блогеры мажут магазинный чек термозащитой для волос и жарят его плойкой? +10

07:05

Вы неправильно пишете асинхронный Rust: .await там, где его не должно быть +9

07:58

Кто набрал сотни звёзд в Open Source СНГ? И как ваш проект может оказаться следующим +7

07:01

Smart Timber: измеряем лес смартфоном. Часть 2: Технические решения для полевых условий +7

07:42

MFA для VPN в UserGate NGFW: как поднять удаленный доступ для Windows и macOS +6

07:08

В России изготовлен СВЧ‑интерферометр для научных экспериментов по измерению плотности плазмы в НИУ «МЭИ» +6

07:04

Кто будет вести секции INFOSTART TECH EVENT 2026 +6

08:00

Celestica DS6000 series: первая ласточка 1,6-терабитных сетей или массовый продукт? +5

07:01

Репортаж с Hi-Tech Building 2026: как выглядит рынок умного дома +5

08:12

Код как документация: как мы строим самодокументируемые витрины данных в Почте Mail +4

08:12

Код как документация: как мы строим самодокументируемые витрины данных в Почте Mail +4

08:00

Короткие видео вместо текстовых комментариев: как я не с того конца тестировал новый формат обратной связи +4

07:26

Автоматизируем посёлок ч. 2: светофор своими руками +4

02:56

Небесная Ось Зла +81

14:18

Локальные LLM в реальной работе: Gemma 4, Qwen 3.6 и Qwen Coder +66

07:16

Как мы автоматизировали свой поселок +64

09:01

Россия выбыла из лунной гонки. Что планируют США и Китай: база, ядерный реактор, спутники слежения +37

07:00

Как технически устроена DPI-фильтрация у российских провайдеров и как её детектировать: разбор open-source инструментов +37

14:05

Bad Apple через CSS: как заставить браузер страдать без единой строчки JavaScript +32

20:17

Как работают с памятью в игровых консолях +29

09:00

Дорожная карта домашнего мини-ПК в 2026: что развернуть, в каком порядке, и зачем — план апгрейда от инфраструктурщика +29

13:01

Лёгкий, доступный, настоящий Телекастер Squier Debut Collection +27

08:00

Как мы в Selectel строим S3-хранилища: от железа до приложения +26

05:02

Хантавирусный круиз у берегов Испании, а также целевая блокировка VPN на 92% +16

13:00

NPU в ноутбуках: что меняется для тех, кто закупает корпоративную технику +15

08:11

Биологи переписали генетический код живой клетки. Что из этого получилось? +13

07:47

Структуры данных на практике. Глава 15: Графы и их обход с эффективным использованием кэша +13

14:44

Найм не спас, Telegram подвёл, ИИ устроил бардак: как мы просели, вернули деньги клиентам, но в итоге собрали веб-сервис +12

08:10

Снимаем показания счётчика воды «Бетар» по RS-485 и «МИР» по BLE с помощью ESP32 +12

12:05

Почему ваш Go‑сервис ломается под 1000 RPS и как найти узкое место за полчаса +11

20:07

Запуск Vivado 2019.1 на Orange Pi 3 LTS  через QEMU +10

02:08

Локальный агент для диагностики инфраструктуры +10

12:39

Коммерческая тайна и промышленный шпионаж: вспоминаем кражу кода у Google +9

ОБСУЖДАЕМОЕ

  • Локальные LLM в реальной работе: Gemma 4, Qwen 3.6 и Qwen Coder +66

    • 218   32000

    Как Яндекс победил Google? Или почему блокировки — худший способ помочь отечественным технологиям

    • 180   27000

    Рабочая сила стареет и немного про ДМС +1

    • 165   20000

    Я искал пассивный доход, открыл пункт выдачи Озон, ВБ и Яндекс, но оказался на работе, где часто не платят

    • 130   55000

    Как мы автоматизировали свой поселок +64

    • 111   19000

    Дорожная карта домашнего мини-ПК в 2026: что развернуть, в каком порядке, и зачем — план апгрейда от инфраструктурщика +29

    • 108   16000

    Небесная Ось Зла +81

    • 67   18000

    Верхум. Люди — нейроны, общество — мозг +8

    • 65   8400

    Что на самом деле толкает заряд по проводу и создаёт ток?

    • 49   12000

    Если if вас замедляют, откажитесь от них

    • 43   10000

    Природа сознания, Большой Взрыв и обратная сборка реальности

    • 41   13000

    ИИ-слоп убивает онлайн-сообщества +11

    • 41   14000

    Россия выбыла из лунной гонки. Что планируют США и Китай: база, ядерный реактор, спутники слежения +37

    • 41   17000

    Чем заменить Microsoft Store? Коротко про мой проект

    • 40   4800

    Год вайб‑кодинга в продакшне. Наблюдения соло‑разработчика

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