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

Подписка


ЛУЧШЕЕ

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

Теорема Пифагора: великий обман школьной программы. Как абстракция убила смысл +11

00:28

Vera — ваш личный десктопный агент +9

04:09

Как я случайно DDOS-нул hh. ru, пытаясь найти работу: история о том, почему боты должны быть асинхронными (и вежливыми) +4

00:59

От Блэка-Шоулза до трансформеров: как устроена современная алгоритмическая торговля +4

05:03

Быстрое формирование команд под проект, умные коммерческие предложения — и ещё 8 российских стартапов +1

04:29

Математика через игры +1

07:24

Moss: Linux-совместимое ядро на Rust. Что это за проект? +42

11:36

Первая в мире библиотека Web Components в духе shadcn. Серьёзно, я проверял +37

06:37

6 простых вопросов, из-за которых сыпятся даже сильные кандидаты (и как отвечать правильно) +29

11:00

Бытовой UX, или зачем в стиралке иллюминатор +27

09:18

История одного SCA: как мы сделали анализ доступным для всех +24

09:01

Замена GPU в ноутбуках +24

09:05

«Конечно, вот ответ на ваш вопрос. Но сначала — реклама» +22

11:10

Новость с запозданием: При запуске Союз МС-28 отвалилась часть стартового стола +21

13:01

Как менеджеры становятся причиной ИТ-катастроф +17

10:22

«Элементарно, Компот!»: разбираем задания киберучений CyberCamp 2025 +17

08:48

Строки кода должны помещаться на экране +17

07:49

Как я уже год развиваю в сотрудниках производства любопытство +16

14:51

Хватит моделировать «на глаз» +14

06:14

Мы — последнее поколение умных? И может ли ИИ заменить целые профессии? +14

04:56

Ущерб от бездумного внедрения ИБ в АСУ ТП: когда «защита» становится угрозой +14

08:00

Странный, но вполне реальный план по затемнению солнца и обращению вспять глобального потепления +13

04:56

Народный гнев против Долиной, а также взлет акций Google +13

16:00

1С использует КАЖДЫЙ ВТОРОЙ бизнес в России. Почему на рынке нет альтернатив? +12

08:50

Айтишник, иди работать на завод +12

13:52

Днем я пишу код, вечером иду в гараж и продаю на Авито на 130 тысяч в месяц +11

09:01

Не делайте рефакторинг как дядя Боб. Я вас умоляю +181

05:16

Поломанная дверь Гордона Фримена +101

16:48

Детгиз на помощь взрослым дядям +73

16:48

Загадка магнитной подвески +68

15:22

Ответ фронтендера на «Не занимайтесь преждевременной оптимизацией» +56

12:00

Как завершение поддержки Windows 10 сказалось на популярности Linux и причем тут Zorin OS +40

19:38

Chrome, Xfce и очень страшное кино +38

13:01

Программируемое зарядное устройство Кулон 830 +31

11:21

Про дома у славян +29

12:58

Поиск в личном фото архиве по текстовому описанию +23

07:05

Ностальгические игры: Twisted Metal 4 +23

14:56

«База данных как API»: Почему я написал свою ORM на Source Generators и обогнал Dapper в 800 раз +22

09:27

За бортом +19

23:57

Сравнительный анализ 18 LLM моделей: конец монополии? +14

07:08

Протестировал 8 брендов LLM на честность, логику и креатив. Claude победил, но Алиса неожиданно в топ-3 +14

10:52

Феномен Arduino: почему эта плата завоевала молодежь, а не стала скучным учебником +13

08:00

Глубокое обучение сверточной нейросети — и фермерский лосось больше не притворится диким +13

18:24

Зачем вашему процессору нейронный блок, если есть RTX 4090? +11

09:53

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

20:37

Применение локальных LLM для OCR +10

ОБСУЖДАЕМОЕ

  • Не делайте рефакторинг как дядя Боб. Я вас умоляю +181

    • 145   39000

    Народный гнев против Долиной, а также взлет акций Google +13

    • 123   13000

    6 простых вопросов, из-за которых сыпятся даже сильные кандидаты (и как отвечать правильно) +29

    • 114   33000

    Как вернуть молодежи интерес к инженерным специальностям? -7

    • 80   8200

    Новость с запозданием: При запуске Союз МС-28 отвалилась часть стартового стола +21

    • 64   15000

    Феномен Arduino: почему эта плата завоевала молодежь, а не стала скучным учебником +13

    • 64   12000

    Днем я пишу код, вечером иду в гараж и продаю на Авито на 130 тысяч в месяц +11

    • 50   48000

    Бытовой UX, или зачем в стиралке иллюминатор +27

    • 46   9600

    Загадка магнитной подвески +68

    • 46   20000

    Ответ фронтендера на «Не занимайтесь преждевременной оптимизацией» +56

    • 46   13000

    Айтишник, иди работать на завод +12

    • 37   26000

    Chrome, Xfce и очень страшное кино +38

    • 37   14000

    Python и паттерны GoF, часть 1: Singleton +7

    • 33   5600

    Как завершение поддержки Windows 10 сказалось на популярности Linux и причем тут Zorin OS +40

    • 32   13000

    Почему ваше резюме не видят? Виноваты не вы, а система: как компании сами создали армию «скрытых работников» +10

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