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

Подписка


ЛУЧШЕЕ

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

О некоторых программах для Linux с точки зрения старого виндузятника +45

09:01

Почему не взлетели дирижабли? Часть 5: тени над Британией +20

08:05

Как я купил бесперебойник Eaton Ellipse ECO 1600 и устроил себе квест по реанимации ИБП +18

14:05

Уникальный смартфон, которому не суждено дожить до наших дней… +14

06:30

Эволюция .NET-разработчика: взгляд рынка на грейды и компетенции (анализ 700+ вакансий) +13

08:00

Loss32: Linux с классическим Windows-интерфейсом на базе Wine и ReactOS. Что это и как работает +12

03:47

Что делать новичку в зале? Полное руководство по силовым тренировкам с нуля +11

11:05

Minecraft: история длиной в 16 (уже 17) лет +9

04:39

Декарт, Поппер и баг в продакшене, или почему самый полезный предмет в моей карьере не имел отношения к ИТ +9

13:01

Fujifilm X-T1: профессиональная камера с душой хипстера +7

12:00

Миф о бесконечном масштабировании или когда ИИшка упрется в потолок +7

10:21

Рынок лимонов и «размалеванные барышни»: текст вакансии как честное зеркало компании (датасет 146 000 вакансий) +6

14:17

Битва промптов в HeadHunter: когда на собеседование приходят нейросети, а человек — только модератор +5

12:33

Управляем питанием по-взрослому: конечный автомат для устройств с батарейным питанием +5

10:14

Не только Вэйланд-Ютани: фантастические корпорации и где они обитают +5

12:37

Почему «голая» GPT не тянет юриспруденцию: разбираем архитектуру китайской LabourLawLLM +3

12:15

Хватит воевать с Makefile: как я написал свой таск-раннер на Rust, чтобы не сойти с ума +3

10:51

Рукопожатие нейронов и люстры против пирамид. На чем держится нормальная работа мозга? +3

09:28

Облачные технологии. Неожиданный поворот +3

08:22

Python вместо After Effects: пишем видео на Manim +3

13:01

21 урок, который я усвоил за 14 лет работы в Google +107

06:30

Почему 2026-й станет годом десктопного Linux + интересные дистрибутивы внутри +56

23:20

Установка Max отдельно от всего в рабочем профиле на Android +51

09:01

Сайдлоадинг и оффлоадинг: cоздание цифровых моделей личности с помощью сверхбольших промтов для LLM +42

08:05

3G в каждый подвал. Как устроена и как работает фемтосота +37

08:00

Функции-конструкторы и оператор new в JavaScript +32

07:30

Электроналиватор: делаем автомат для коктейлей с помощью Raspberry Pi, нейросети и фанеры +32

10:26

Библиотека JIT-компиляции Loops для оптимизации нейросетей, СУБД и не только +28

12:00

Онлайн-бронирование без интернета: как Япония решила проблему билетов в 1960 году +26

20:21

Let’s Encrypt: Стали общедоступны короткоживущие сертификаты и поддержка IP-адресов вместо доменов +25

16:29

«Я — средний»: кастовая система, IT-карьера и миграция из Индии +25

12:03

Два бита на транзистор: ПЗУ микрокода повышенной плотности в FPU-сопроцессоре Intel 8087 +22

06:01

Самые красивые деньги в мире и как их выбирают +20

16:05

Способы концентрации магнитного поля +18

12:04

Программный съем трафика на скорости 400G: сравнение методов обработки и неочевидные бутылочные горлышки +18

09:35

Инфостарт — 20 лет вместе с сообществом 1С +18

07:05

От фантазии к прототипу: как фантастические фильмы влияют на нашу жизнь +17

12:48

Rust в действии: допечатка +15

07:10

«Мы падаем, а клиенты не замечают» или подходы к раздаче редко изменяемых данных +15

23:26

Почему ваша нейросеть всегда предаст вас ради вежливого хакера с плохими намерениями? +14

06:00

«Джуны старше 50 лет никому не нужны». Как я сменил воинскую службу на IT в 53 года +147

20:59

Гайд по обходу «белых списков» и настройке цепочки рабочие варианты, почему ваш VPN может не работать +49

07:01

Как развернуть Nextcloud Talk на собственном VPS +47

09:50

Радары и то, как от них прячутся. Часть 3 +45

08:45

Плата с «повернутым сокетом» и серверы с жидкостным охлаждением: что подарил рынок под Новый год +45

09:01

Новогодний подарок себе — полный электрогитарный аудиотракт в уютной деревянной коробочке +43

13:01

Сеть вместо SD-карты: как собрать минимальный Linux для Raspberry Pi с возможностью загрузки по сети +42

12:53

Как удаление сорока строк увеличило производительность в 400 раз +42

08:05

Имитатор аккумуляторной батареи +37

13:18

Боль в спине, или «Раскукожь его обратно» +32

07:00

Зачем школьный учитель из Баку придумал первый пенный огнетушитель +30

15:28

Актуальный на 2026 Roadmap по Go: с нуля до middle +29

06:59

Макрос-клавиатура которую я делал 5 лет +27

07:05

Определение скорости/факта наличия вращения микродвигателей +26

05:36

VictoriaLogs в Kubernetes: от установки до практического применения +22

21:41

Нескучное программирование. Иерархия концептов +21

14:05

Нейро-дайджест: ключевые события мира AI за 2-ю неделю января 2026 +21

08:45

Что делает PAM, пока вы думаете, что просто открыли RDP +16

08:09

Тетрахроматы: люди со сверхспособностями среди нас +16

12:45

Роботы в дата-центре? Что им доверяют, и куда не пускают +14

ОБСУЖДАЕМОЕ

  • Почему 2026-й станет годом десктопного Linux + интересные дистрибутивы внутри +56

    • 238   22000

    Установка Max отдельно от всего в рабочем профиле на Android +51

    • 125   35000

    Гайд по обходу «белых списков» и настройке цепочки рабочие варианты, почему ваш VPN может не работать +49

    • 122   45000

    «Джуны старше 50 лет никому не нужны». Как я сменил воинскую службу на IT в 53 года +147

    • 117   45000

    О некоторых программах для Linux с точки зрения старого виндузятника +45

    • 104   10000

    Мальчики умнее девочек? Разбираем миф об IQ в IT +5

    • 98   14000

    Смогут ли нас пересадить на мессенджер MAX? -9

    • 84   8300

    Новый класс Интернет-ресурсов: антисоцсети +8

    • 82   14000

    Актуальный на 2026 Roadmap по Go: с нуля до middle +29

    • 63   8100

    Боль в спине, или «Раскукожь его обратно» +32

    • 57   12000

    21 урок, который я усвоил за 14 лет работы в Google +107

    • 35   25000

    Жизнь 3.0: Быть человеком в эпоху искусственного интеллекта +5

    • 32   14000

    Вайбкодинг пошёл не по плану: как я снёс базу данных по совету Google Gemini (почти) -4

    • 30   18000

    Сайдлоадинг и оффлоадинг: cоздание цифровых моделей личности с помощью сверхбольших промтов для LLM +42

    • 29   9500

    Человек, которого ненавидит Adobe -15

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