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

WhatsApp не работает: Блокировка 28 ноября РКН и причем тут ТСПУ +10

10:23

Джун наоборот или разоблачение главного мифа вайб-кодинга +75

08:05

Программирование для Windows 1.0 в 2025 году +45

09:01

Кустарные вакуумные триоды Клода Паяра. Часть 3. Установка ТВЧ +37

08:21

Гайд по базовому окружению для AI без знаний в MLOps +34

13:01

90% программистов совершают эти ошибки. Как писать на Angular грамотно +28

10:34

Рынок найма в IT-2025: мифы, факты и взросление индустрии. Разбор от HRD МойОфис [SHORT & FULL] +28

07:45

Fizz Buzz на косинусах +24

17:14

Хроники русской сметы II. Неприличное слово «Прибыль» +22

09:07

AMA от InfoWatch — эксперты компании отвечают на ваши вопросы про ИБ +21

08:41

Обнаружена бета-версия Fallout: New Vegas с несколькими гигабайтами вырезанного контента +21

07:40

Издательство Питер. Колонка редактора, ноябрь 25 г +16

05:52

Год в роли IT-ментора: неочевидные выводы, цифры и стоит ли оно того +16

08:16

История сейфов +15

12:23

Kandinsky 5.0: линейка open-source моделей генерации изображений и видео нового поколения +14

10:51

Обмен опытом без формальностей: как мастермайнд помогает строить в командах культуру самообучения +11

07:05

Как музыка активирует мозг и тело +11

12:18

«Господин Говорунъ: как я обучил маленькую модель разговаривать на дореформенном русском» +10

10:20

Как устроена наблюдательная астрономия: от Галилея и серебряной пластинки до натриевой звезды +10

06:38

Завис PVC? Виноват финализатор +10

12:40

Как сократить количество Draw Calls (вызовов отрисовки) в UI Unity +9

08:00

Почему радиочастоты не кончаются и как станции уживаются в эфире +75

14:35

Kodak десятилетиями тайно эксплуатировала ядерное устройство в своём подвале, и это было чудо научной мысли +74

11:02

Ищем тестировщиков интимных гелей +56

10:30

Выдыхай, бобёр: как я перестал тупить и собрал монитор CO2, который не врет +49

09:22

Интеграция с маркетплейсами Wildberries и Ozon: коды, лимиты и одна Елена +47

13:02

Загадочный чёрный Explorer +42

10:32

Как патчить ядро Linux: подробное руководство +37

07:37

Canon Navigator HD-40 — раритетный компьютер с факсом, сканером, принтером и необычным GUI +35

09:01

Повышение прочности FDM-печати +32

10:01

Запускаем почтовый сервер на VPS под Windows +28

09:15

Выгоняем китайцев из розетки: переезд умного дома на Zigbee2MQTT и Home Assistant +21

08:29

FastAPI: Хватит писать всё в main.py. Гайд по нормальной структуре для новичков +21

09:39

Как мы улучшили качество сервиса VK Видео на SmartTV +19

07:28

Агентность, мультимодальность, бенчмарки: технический итог и взгляд в будущее на AIJ Deep Dive +19

05:31

А можно вернуть старый способ подсчета просмотров на Хабре? +19

13:03

Алгоритмы нужны программистам, или cамая быстрая и простая реализация RMQ +18

12:09

Nelm vs Helm 4: что изменилось с новым релизом Helm и почему Nelm всё ещё лучше +18

14:00

Заняла 50к у бабушки и открыла бизнес. Спустя 10 лет закрываю +16

07:10

Как вырастить ребёнка, который боится врачей +16

08:05

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

ОБСУЖДАЕМОЕ

  • Я варю мыло, делаю 2 млн в год и не боюсь бедности +5

    • 91   42000

    Kodak десятилетиями тайно эксплуатировала ядерное устройство в своём подвале, и это было чудо научной мысли +74

    • 88   84000

    Выдыхай, бобёр: как я перестал тупить и собрал монитор CO2, который не врет +49

    • 81   10000

    Джун наоборот или разоблачение главного мифа вайб-кодинга +75

    • 67   17000

    Есть ли у человека душа и можно ли перенести сознание в компьютер? +9

    • 49   7000

    Алгоритмы нужны программистам, или cамая быстрая и простая реализация RMQ +18

    • 48   11000

    Ищем тестировщиков интимных гелей +56

    • 46   14000

    Выгоняем китайцев из розетки: переезд умного дома на Zigbee2MQTT и Home Assistant +21

    • 44   10000

    FastAPI: Хватит писать всё в main.py. Гайд по нормальной структуре для новичков +21

    • 31   15000

    Релокация — это сложно: мой опыт жизни и работы в Нидерландах +7

    • 29   10000

    Заняла 50к у бабушки и открыла бизнес. Спустя 10 лет закрываю +16

    • 29   14000

    Генерируем G-code прямо в браузере: как я написал карманную CAM-систему на JS+WebGL, чтобы не запускать тяжелый CAD +13

    • 27   9000

    Как патчить ядро Linux: подробное руководство +37

    • 22   10000

    Вайбкодинг — советы НЕразработчикам, которые хотят кодить с ИИ +5

    • 21   9700

    Почему радиочастоты не кончаются и как станции уживаются в эфире +75

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