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

Как сэкономить миллиард, если правильно подуть на раскаленную железку +46

08:05

Вышли 25 лет назад и изменили игровую индустрию навсегда. 5 самых важных игр 2001 года +20

09:01

Как я воскресил Canon 7D Mark II, который продавался «на запчасти» +15

05:54

«Оценка 300 часов? ИИ мне сделает за вечер!». Считаем тремя методами, и 300 — ниже плинтуса в индустрии +13

05:33

JOIN как в ORM: связи по foreign key в PostgreSQL +11

09:00

Как мы подвели Кира Булычёва и почему его книги — об украденном детстве и о том, как его сохранить другим +10

05:45

Спустя 6 лет я докопался до ядра компьютера, и там была математическая формула +9

00:21

Феномены памяти +6

00:37

Обзор препринтов научных статей в области астрофизики за июнь 2026 года +5

08:22

История о том, как я написал компилятор Svelte на Rust +4

08:00

Геометрия ОТО на Python: рисуем эргосферу, черную дыру и фотонную сферу в различных метриках +4

10:16

Как оценить стоимость ручного поиска документов в компании на 200 человек +3

09:06

Если вы думаете, что знаете, чем отличается «Expression» от «Statement», то, скорее всего, вы ошибаетесь +3

11:46

Homelab для дата инженерии из игрового ПК +2

09:57

Квадриллион параметров (1Q) для LLM. Когда нам ждать такую модель? +2

09:23

Агент изменил рабочую базу данных, хотя это было запрещено в правилах +2

07:20

Ловушка добавления АБГШ +2

11:30

Тропа хиппи: утраченный маршрут +1

06:27

Rider и базы данных: неочевидные возможности IDE, которые экономят время +1

10:49

Фильтрация ТСПУ у серверов Таймвеб Cloud: диагностика, обход через reverse-proxy и СDN +56

09:00

Эхолокация: микрофон и фазированная решётка из колонок +45

19:23

7 месяцев вайбкодинга: как в одиночку делать то, что раньше требовало команду +34

14:05

Подробная история развития 2D-графики в PC +31

13:01

Не самый дешёвый суперстрат Cort G250 Spectrum +31

09:01

Как изобрели письменность? Часть 3. От египетских иероглифов к финикийскому алфавиту через синайские копи +31

09:01

От Dune II до Dune: Awakening: как менялась легендарная серия игр по «Дюне» +25

08:00

5 странных гаджетов 2026 года: смартфоны с E‑Ink, Linux‑раскладушка, наладонник и кое‑что еще +21

00:03

Детектор жизни +20

16:35

Нейронные сети нетрадиционного квантования +19

11:30

О микроводорослях, недостижимых идеалах и оплачиваемом веганами будущем +16

12:16

Ловушка для ума разработчика №3: почему самые надёжные инженеры остаются без поддержки +14

11:02

DroneCan. Анатомия +13

21:46

Тёмные паттерны: как закон в России впервые прямо запрещает манипулятивный дизайн +12

07:21

Папа, мне нужен пульт: как я подключил DualSense к детской машинке +10

18:19

Стохастический клеточный автомат на системе типов +9

16:14

Делаем себе сложно +9

12:33

ИИ-агент 4 месяца дежурит на наших прод-логах: 113 алертов, 2 галлюцинации и фикс за 3,5 часа +9

08:57

Двенадцать символов, двадцать один байт: как я научил голый RISC-V говорить «Привет, мир!» +9

07:19

«У вас в резюме указаны навыки ИИ. Что вы имели в виду?» Что отвечать, кроме количества потраченных токенов +9

19:49

Мой агент Ouroboros побил Codex с Claude Code на Terminal-Bench, OSWorld и CL-Bench. Он написал себя сам +77

12:35

Леопольд Ашенбреннер: Как 24-летний щегол заработал $30 млрд на инвестициях в AI (и потерял их вчера) +72

07:01

MicroBee — история маленького компьютера, сумевшего победить Apple +61

13:27

Находки в опенсорсе: мир питона за июль 2026 +46

13:01

Писать от руки полезно для мозга, и вот вам несколько советов +46

07:02

Последние из серверной: почему эпоха трушных сисадминов заканчивается (или только начинается) +44

09:01

Не все герои носят плащи. Некоторые носят патчкорды +36

07:05

Механический «диодный мост»? +34

18:10

Моя котельная +32

08:00

IaC в гибридной IT-инфраструктуре: решаем проблемы разрозненного управления с Terraform +32

06:05

Полтора месяца зависаний, ноль дампов и 44 байта нулей +32

10:35

Окраины городов и полукабины-призраки. Ищем последние рабочие таксофоны +31

07:05

Программируемые калькуляторы. Часть 4.1. «Лаборатория счетных машин доктора Вана. LOCI-2» +20

11:00

Как выбрать OCR в 2026-м: тестируем девять моделей на трех движках инференса на рукописном русском +19

11:00

Как выбрать OCR в 2026-м: тестируем девять моделей на трех движках инференса на рукописном русском +19

09:44

Боты уже составляют большую часть интернет-трафика. Почему это проблема не только ИБ +18

08:49

Следующая ИТ‑революция уже на пороге: как Physical AI меняет наше представление о роботах +18

08:33

Сбрасываем счетчик на принтере Epson с помощью ghidra-mcp +18

19:19

Уведомления на Android без Google: почему UnifiedPush через публичный ntfy у вас не работает +17

17:15

ИИ умеет придумывать идеи, но не умеет в них верить +15

ОБСУЖДАЕМОЕ

  • Леопольд Ашенбреннер: Как 24-летний щегол заработал $30 млрд на инвестициях в AI (и потерял их вчера) +72

    • 89   24000

    7 месяцев вайбкодинга: как в одиночку делать то, что раньше требовало команду +32

    • 78   18000

    Писать от руки полезно для мозга, и вот вам несколько советов +46

    • 73   16000

    Фильтрация ТСПУ у серверов Таймвеб Cloud: диагностика, обход через reverse-proxy и СDN +56

    • 70   21000

    Последние из серверной: почему эпоха трушных сисадминов заканчивается (или только начинается) +44

    • 54   29000

    Моя котельная +32

    • 37   15000

    Мой агент Ouroboros побил Codex с Claude Code на Terminal-Bench, OSWorld и CL-Bench. Он написал себя сам +77

    • 36   15000

    Эхолокация: микрофон и фазированная решётка из колонок +45

    • 34   10000

    Находки в опенсорсе: мир питона за июль 2026 +46

    • 34   11000

    Уведомления на Android без Google: почему UnifiedPush через публичный ntfy у вас не работает +17

    • 33   11000

    «Оценка 300 часов? ИИ мне сделает за вечер!». Считаем тремя методами, и 300 — ниже плинтуса в индустрии +12

    • 32   6000

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

    • 29   14000

    Селлеры плакали, кололись, но продолжали торговать на маркетплейсах +5

    • 28   5500

    Механический «диодный мост»? +34

    • 28   13000

    Чтение на выходные: «Теория каст и ролей» Алекса Крола +5

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