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

Подписка


ЛУЧШЕЕ

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

Ethernet с дальностью до километра. 10BASE-T1L +36

04:59

Кибератаки на Россию, а также ядерный межстрановой щитпостинг +31

06:00

Ограничения на пути достижения Общего Искусственного Интеллекта (AGI) +21

05:29

Паттерны современного Node.js (2025) +21

10:00

«Вымпелком» – ваше окно в мир спама +15

09:05

Великое вымирание: как ИИ разрушает интернет +14

09:01

Математическая живопись Иньиго Килеса +12

08:36

Щи: симулятор жестокости» или «Как не надо делать игры» +12

06:34

Прошивка К1921ВГ015 без IDE и покупки JTAG программатора +11

08:00

Как мы в VK Tech построили технический радар для масштабной инженерной команды +8

08:00

Как мы в VK Tech построили технический радар для масштабной инженерной команды +8

10:31

Опенсорсим yx_state — свой State Management для Flutter +7

08:39

Большие ресурсы — большие проблемы? Расскажите в опросе, как вы управляете своей инфраструктурой в ЦОДе или облаке +6

10:33

6 приёмов создания отличных Shell-скриптов от пользователей Hacker News +5

09:01

Пока, dual packaging: в каком формате публиковать npm-библиотеки +5

08:06

Автоматическая суммаризация 10K встреч в день: от требований к продакшн-решению +5

07:15

Байки про тактические паттерны DDD +5

07:00

За кулисами разработки: метод интеграции сервисов с Битрикс24 +5

09:39

Уронили, отключили, обрубили, сломали: четыре сценария отказа метрокластера в прямом эфире +4

08:41

(Не) безопасный дайджест: сезон инсайдеров, дефолтные пароли и безупречное безделье +4

13:01

Про свёрла +280

09:01

Автоматический светодиод +47

22:55

Волк уволен из Газпрома за подписку на Антона Назарова +43

13:02

Прощание с доступной Windows: Microsoft хоронит SE-версию и уступает нишу конкурентам +28

15:50

Идеальное опровержение Эйнштейна +27

22:39

Брелок с LED матрицей 8x8 на CH32V003 +22

08:12

Теорема о разделяющей оси при обнаружениях столкновений +21

08:20

IOCCC: Best of Show 2018 +20

07:06

Наглядное пособие начинающего ретрогеймера. С чего начать путь в мир старых шедевров +15

08:47

О прионах и дизайне белков +14

18:53

Десять игр, в которые должен поиграть каждый геймдизайнер +13

08:00

Как ходоки получают разряды: обсуждаем соревнования по Nordic Walking +12

22:10

Безопасность с Astra Linux: ресурсы для специалиста ИБ +10

14:52

Учим LM Studio ходить в интернет при ответах на вопросы +10

07:43

Фрактальная монотипия +10

19:16

Какого китайца выбрать? DeepSeek vs Qwen vs Baidu +8

15:45

Почему Европа не смогла сделать свою Кремниевую долину +7

12:09

По пакету всему свету. Изучаем пакеты в Arch Linux +7

11:45

Грабли, которые я собрал на пути в геймдеве и чему они меня научили +7

21:00

Джун, ты просто не жил без автолэйаута +6

20:59

История о том, как я вытащил себя из бесконечной ленты и стал успевать все +92

00:01

Взаимодействие микросервисов: проблемы, решения, практические рекомендации +58

09:01

Мемы админов и про админов. Часть 2: для чего одмину бубен? +51

13:01

Нерешённые вопросы о происхождении жизни +43

10:29

Шикарные портативные консоли лета 2025 года: новинки карманного гейминга +30

16:24

Throw — это новый goto +26

08:00

10 лет Windows 10: почему «десятка» живет дольше, чем планировалось +26

10:10

Изучаем Go: руководство для JavaScript-разработчиков. Часть 1 +25

09:44

Небольшое ретро-программинг приключение, или как я снова полюбил кодить +23

16:10

Как писать промт для генерации изображения/видео и получить лучший результат? +20

07:00

Покажи свой стартап/пет-проект (август) +14

11:15

Почему LLM не мыслят как люди +13

20:45

Об индексах на столбцах с низкой кардинальностью +10

14:02

Больше 40 товарных знаков: как создатели Atomic Heart защитили свою игру в России +9

05:56

Как захватить Вселенную за AGE (Часть 1) +8

22:11

Худеть по науке и без мазохизма +7

19:40

То, что должно успокаивать – заставляет бояться. ГАМК, астроциты и ПТСР +6

09:18

Защита от дурака в Gemini 2.5 Deep Think +6

15:36

Операционка как пет-проект — подборка «экспериментов» +5

19:46

Что такое ИДЕЯ с точки зрения геймдизайна, сколько она на самом деле стоит, и как генерится +4

ОБСУЖДАЕМОЕ

  • 10 лет Windows 10: почему «десятка» живет дольше, чем планировалось +26

    • 266   15000

    Волк уволен из Газпрома за подписку на Антона Назарова +43

    • 208   79000

    Про свёрла +280

    • 153   26000

    Throw — это новый goto +26

    • 136   25000

    Шикарные портативные консоли лета 2025 года: новинки карманного гейминга +31

    • 94   12000

    Нерешённые вопросы о происхождении жизни +43

    • 68   17000

    Взаимодействие микросервисов: проблемы, решения, практические рекомендации +58

    • 68   10000

    Ethernet с дальностью до километра. 10BASE-T1L +36

    • 62   1900

    Почему LLM не мыслят как люди +13

    • 58   3800

    История о том, как я вытащил себя из бесконечной ленты и стал успевать все +95

    • 54   39000

    Худеть по науке и без мазохизма +7

    • 48   4100

    Покажи свой стартап/пет-проект (август) +14

    • 40   3400

    Щас я правду расскажу… -3

    • 33   2500

    Какого китайца выбрать? DeepSeek vs Qwen vs Baidu +8

    • 32   12000

    Автоматический светодиод +47

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