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

Подписка


ЛУЧШЕЕ

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

Радио почти из ничего. Самодельные радиодетали 1920-х. Гальванические элементы +43

08:00

Прятал пакеты и все отрицал — как мы отладили DHCP‑балансировщик +33

08:05

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором +27

09:01

Барби-комп: трагическая история компьютера Mattel Aquarius +24

12:00

От архитектуры RISC-V в ЦОД до 256-ядерных чипов Diamond Rapids: новинки серверного железа за август 2026 +22

07:37

Самая простая самодельная солнечная батарея: просто из куска меди или медного провода +21

09:13

Как изменится меню в условиях глобального потепления? +17

01:22

Луддиты 2.0: почему борьба с нейрослопом проиграна +14

15:50

Cloud Trust vs Zero Trust: стандарты безопасности в гибридном окружении +12

07:43

Как мигрировать Gitlab под рабочей нагрузкой из одного в десять Docker‑контейнеров +12

17:00

Почему сеньоры не хотят становиться тимлидами (и правильно делают) +11

07:46

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

14:32

Как австралийца судят за утечку судебных документов из-за нейросети +9

11:28

Где в IT зарплаты растут быстрее всего в 2026 году +9

10:52

Федерация корпоративного мессенджера: как связать независимые On-Premise-контуры и сохранить контроль над данными +9

10:52

Федерация корпоративного мессенджера: как связать независимые On-Premise-контуры и сохранить контроль над данными +9

10:00

Все, что вы не знали о киберпанке — как появился, что с ним стало и наконец — что он такое на самом деле. Часть 1 +9

12:08

Как мы научили ИИ-модель понимать документы и теперь оформляем новых сотрудников в 2 раза быстрее +8

11:45

async def или def в FastAPI: как одна строчка делает сервис в 40 раз медленнее +8

07:53

На что обратить внимание при выборе вендора системы электронного документооборота +8

06:24

Восстановление данных с нуля со сломанной пополам SD-карты памяти +232

08:03

Переделка радиоприемника «Электроника 26–01» +133

12:00

Создать правильную карту мира невозможно. Но есть много отличных неправильных +68

13:01

Чем заменить top, ps и netstat в 2026 году, и когда их лучше не трогать +67

10:48

Я перестал пользоваться самыми умными ИИ‑моделями. Программировать стало быстрее и дешевле +51

19:53

FNIRSI 2C53T — классный прибор с отвратительной зарядкой. Доделываем то, что не смог завод‑изготовитель +49

09:01

Зачем и чем протыкать бактерии? +41

08:30

Отказоустойчивость в мультиклауде: архитектура и реальные кейсы +36

11:00

Отреверсили проприетарный gRPC и выложили в опенсорс 100% совместимый аналог их сервера, потом CLI +34

15:12

Diablo II, римские стратегии и Prince of Persia: что фронтенду стоит перенять у геймдева +25

08:55

Не только PyTorch. О чём на самом деле новая книга Лоуренса Морони +25

08:00

Платформа данных на минималках. Часть 3. Вычислительный движок +25

07:00

Как у нас горели лидары в стальковше +25

05:58

Не хватает RAM для тяжелого софта на роутере? Поставьте его на мини-сервер из старого смартфона +21

10:01

OpenAI пообещали впредь вовремя рассказывать о «бедокурстве» своих нейронок +20

12:25

Бактериальные логические вентили и рибосомная память +19

07:48

«Лучшие» практики Rust, которые вас подведут. Часть 2 +16

07:00

Электрокарниз — это не профиль + мотор. А что еще? +16

07:45

Как мы делали масло — МАСЛО, КАРЛ! — для мытья рук и как оно работает +14

15:03

Диалектический кейс за искусственный интеллект для прогресса цивилизации +12

ОБСУЖДАЕМОЕ

  • Я перестал пользоваться самыми умными ИИ‑моделями. Программировать стало быстрее и дешевле +51

    • 258   92000

    Выбираем бэкенд в 2026 (PHP, Dart и C++ Drogon) +12

    • 56   11000

    Переделка радиоприемника «Электроника 26–01» +133

    • 55   17000

    FNIRSI 2C53T — классный прибор с отвратительной зарядкой. Доделываем то, что не смог завод‑изготовитель +49

    • 54   19000

    Восстановление данных с нуля со сломанной пополам SD-карты памяти +232

    • 44   17000

    Чем заменить top, ps и netstat в 2026 году, и когда их лучше не трогать +67

    • 35   82000

    70-летний пенсионер выпустил 445 книг с помощью ChatGPT. Но тут интересно не это +1

    • 34   7100

    Как я выбирал локальную модель для кодинга на 16 ГБ VRAM — и трижды менял победителя +7

    • 33   8700

    Можем ли мы быть уверены, что время действительно существует? +2

    • 28   7200

    Не хватает RAM для тяжелого софта на роутере? Поставьте его на мини-сервер из старого смартфона +21

    • 28   11000

    Создать правильную карту мира невозможно. Но есть много отличных неправильных +68

    • 24   15000

    3. Почему мы положили компьютер горизонтально и залили его жидкостью? +5

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