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

Подписка


ЛУЧШЕЕ

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

Старый трансивер эфир не испортит. Часть 3. Умощняемся +9

05:52

Книга среднего уровня — 1 +6

08:47

Действительно богатые сообщения в Telegram-ботах: разбираем Rich Messages +2

08:00

«Иностранные холодные кошельки» — или нами когда-нибудь перестанут управлять идиоты? +72

08:15

Сэнди Петерсен и Джон Кармак: как Quake сломал id Software +29

23:14

Taskbar с живыми превью работающих приложений (олдскул на NET11) +28

13:19

Носители данных — «игра на выбывание» (2026.07) +23

09:01

«Из ниоткуда в Грецию» и похищенный врач: что стояло за волной сообщений о странных дирижаблях в США 1890-х годов? +23

08:30

5 новых одноплатников лета 2026 года: x86, Snapdragon и сменные процессоры +19

17:37

Используем старый Mikrotik как сигнализацию +18

13:05

Подземный гигант: зачем Швейцария строит самую мощную батарею в мире +18

13:02

Самодельная электрогитара: тонируем деку и подгоняем к ней гриф +18

10:03

Телефон из 1999 года: Alcatel One Touch Pocket. Что внутри? +16

11:50

USB-ключ для ввода TOTP-кодов и сохранённого пароля +15

12:55

Различие между научной гипотезой, теорией и законом +13

09:05

Пока все ждут GTA. Вспоминаем, что ещё делала Rockstar и удивляемся некоторым наименованиям +12

08:27

От игры за $999 до симулятора автобуса: самые странные проекты в истории Steam +12

18:53

Как я обучил русский RAG‑сплиттер, который режет документы по индексам, а не по тексту +10

17:04

Иллюзия безопасности или как ваши сотрудники прямо сейчас обучают конкурентов +10

06:47

Handoff-driven development +10

18:05

Игра проигравшего +9

16:16

По следам Тёмного Мессии. Подборка слэшеров от первого лица +9

14:07

«Уэбб» обнаружил новый сюрприз в ранней Вселенной: зрелое скопление галактик +9

04:00

B4 — сетевой мультитул по обходу блокировок +115

14:40

АВК-6: Персональный Аналоговый Компьютер +88

14:33

Как ИИ и очереди на заправках повлияли на появление нового социального феномена +59

07:25

PowerHTML +56

07:01

Несложные ходовые вакуумметры. Часть 1. Манометры сопротивления (Пирани) +43

15:00

Симулятор восприятия: три секунды побыть тем, кто не видит вашу кнопку +41

07:30

Почему интервью для разрабов — такое непроходимое говно, и что с этим делать? +39

11:55

Как я запустил перцептрон на обычном непрограммируемом калькуляторе Casio +38

13:02

Паттерны доступа к данным, которые выбесят ваш процессор +37

09:01

Практическое руководство по аудиту беспроводных сетей (Wi-Fi) на промышленных объектах и складах +33

22:52

ставим 6 прoкси в 2 клика за 5 минут на 1 VPS +30

07:05

От пламени прошлого — до сверхсовременных дальнобойных фонарей: история света, часть-2 +27

09:00

T-Shaped специалист: эволюция или ловушка современного IT? +24

09:27

Agent Driven SDLC: как меняется разработка в эпоху ИИ +23

09:27

Agent Driven SDLC: как меняется разработка в эпоху ИИ +23

10:14

Запускаем LLM локально на майнинг ферме из 4 GPU +22

15:00

Новинка: «Инженерия данных. Паттерны проектирования» +20

08:00

Почему мощных видеокарт недостаточно для ИИ +20

11:35

Все внедрили AI. Почти никто им не пользуется. Разбор самого массового вранья года +19

23:43

Картофельный парадокс Нечерноземья: почему урожайность растёт, а полки завалены импортом +14

ОБСУЖДАЕМОЕ

  • Как ИИ и очереди на заправках повлияли на появление нового социального феномена +59

    • 233   41000

    «Иностранные холодные кошельки» — или нами когда-нибудь перестанут управлять идиоты? +72

    • 91   19000

    АВК-6: Персональный Аналоговый Компьютер +88

    • 55   15000

    B4 — сетевой мультитул по обходу блокировок +115

    • 55   43000

    ставим 6 прoкси в 2 клика за 5 минут на 1 VPS +30

    • 36   20000

    JetBrains IDE: будущее не за горами +8

    • 36   15000

    Подземный гигант: зачем Швейцария строит самую мощную батарею в мире +18

    • 33   10000

    PowerHTML +56

    • 33   9700

    Запускаем LLM локально на майнинг ферме из 4 GPU +22

    • 28   11000

    Почему интервью для разрабов — такое непроходимое говно, и что с этим делать? +39

    • 27   11000

    HTTP получил метод QUERY: зачем понадобился безопасный запрос с телом +10

    • 24   11000

    Все внедрили AI. Почти никто им не пользуется. Разбор самого массового вранья года +19

    • 21   9800

    Народная карта наличия бензина: честно про цифры, архитектуру и как PostGIS прод положил +1

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