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

Подписка


ЛУЧШЕЕ

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

Тайна Motorola E398 — лучшего музыкального телефона из нулевых +72

12:54

А король-то голый! Как написать свой Claude Code в 200 строках кода +24

09:01

Почему не взлетели дирижабли? Часть 4: небесные корабли кайзера идут на войну +24

13:01

Объектные хранилища: чем заменить minio? +21

18:50

Радары и то, как от них прячутся. Часть 2 +17

16:06

Часть 1. Технологический суверенитет в царской России +14

08:05

Пять нестандартных портативных компьютеров: кибердеки, ретро-ноутбуки и игровые гибриды +14

14:38

Ты имеешь право передумать. Способность сомневаться в своей неуверенности как источник мотивации +13

21:32

Как сделать книгу за пятьдесят рублей +12

17:08

Почему ваш ИИ всегда с вами соглашается (даже когда вы категорически неправы) +11

16:49

Ридберговские атомы и тонкая работа с оптическим пинцетом +11

14:58

Если UPDATE столкнулся с заблокированной строкой +11

09:28

Легкое «нелегкое чтение» — книги, которые можно прочесть за вечер +10

17:37

В спектре солнечного света отсутствуют некоторые цвета – и мы до сих пор не можем полностью объяснить, почему +9

07:00

LaTeX. Пакет, о котором должен знать каждый математик. Изометрические кубики, «змейки» из квадратиков. Часть 4/4 +8

12:58

AI & RAG. Помощник по техническим вопросам систем управления освещением +7

09:21

Что 350 различных теорий сознания говорят нам о реальности +6

20:02

Yamaha и ее интеллектуальная собственность +5

18:46

Санкт-Петербургский парадокс +5

17:55

Психологические ловушки. Слепое пятно восприятия +5

08:05

Сам себе VoLTE. Запускаем сотовую сеть 4G LTE с поддержкой звонков и SMS +176

06:58

Структуры данных на практике. Глава 1: Разрыв в производительности +64

19:07

Гортанный праиндоевропейский, или как звучали ларингалы +49

09:01

Магнитные монополи: что это, существуют ли они, и где их искать? +44

14:08

Как я написал bash-скрипт и получил оффер +36

13:01

Электровакуумный геттер, газовыделение, газопоглощение в ЭВП +36

07:00

Фитнес в VR? Добавляем свою музыку в BeatSaber +36

20:55

Тестирую ChatGPT, Claude, DeepSeek, Grok и ещё 5 нейросетей на реальном запросе: кто поможет активировать Windows? +33

14:22

Верстаем сложный прогрессбар в 2026 году +32

15:49

Какой Может быть UART-CLI в Микроконтроллере (или Курс Молодого Бойца) +31

09:58

Как я работал и «зарабатывал» на фрилансе (fl.ru) +21

16:04

Зима — время беспрецедентно увеличить мохнатость: электрофлокирование +20

12:00

Acemagic M1A Pro+: новый мини-ПК с Ryzen AI Max+ 395. Что за зверь? +20

11:45

Полный путь пакета в Linux: от Ethernet-кадра до Kubernetes CNI +16

20:51

Обучение ИИ-моделей на обычном ЦП +14

16:19

Как обрабатывать 5 млн изменяющихся форм в минуту с SLI 99.99% +13

05:51

Как взломать систему банка с помощью газового баллончика и выключенного принтера +13

13:36

ChatGPT 5.2 Pro vs Claude Opus 4.5 vs Gemini 3 Pro: битва титанов в программировании +12

07:00

Если ты делаешь книгу в LaTeX, то ты обязательно должен знать эти фишки. часть 3/4 +12

16:52

Реляционные шарады: превращаем фильмы в таблицы +11

ОБСУЖДАЕМОЕ

  • VPN не запретят никогда -55

    • 153   83000

    Тайна Motorola E398 — лучшего музыкального телефона из нулевых +72

    • 70   11000

    Сам себе VoLTE. Запускаем сотовую сеть 4G LTE с поддержкой звонков и SMS +176

    • 68   33000

    Роскомнадзор прав, а вы нет -37

    • 48   3800

    Как придумать надежный пароль и не забыть его -7

    • 46   7600

    VladX: как я создал язык программирования с русским синтаксисом в 13 лет +6

    • 44   9700

    Такси — это просто чей-то автомобиль -2

    • 31   3100

    Судные дни рынка труда: Большая аналитика 2025/26. Парадоксы выживания +10

    • 30   14000

    Магнитные монополи: что это, существуют ли они, и где их искать? +44

    • 30   9400

    ChatGPT 5.2 Pro vs Claude Opus 4.5 vs Gemini 3 Pro: битва титанов в программировании +12

    • 28   12000

    Гортанный праиндоевропейский, или как звучали ларингалы +49

    • 27   12000

    Админим Linux-сервер через Cursor AI -1

    • 27   7900

    Зумеры под микроскопом: почему так модно их критиковать? +1

    • 26   6100

    «Как натянуть сову на глобус, не привлекая внимания санитаров?» или по следам «мёртвого льва которого пнули» +2

    • 25   8900

    Как я написал bash-скрипт и получил оффер +36

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