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

Ненормальные непотребства, трюки, хаки и алгоритмы на C +20

08:26

Полезные ресурсы для тестировщиков: подборка от специалистов Selectel +17

07:05

Автомобили-конструкторы, кафе с удалёнными официантами и отстреливающиеся батареи: 15 проектов промдизайна 2025 +15

07:07

Рецензия на книгу «Принципы модернизации программных архитектур» +14

07:00

Закономерности в данных вместо догадок: как мы помогаем студентам дойти до конца курса +13

06:07

Как выбрать идею для инди-игры и не потратить годы впустую +13

06:27

Black-White Array: новая структура данных с O(log N) аллокаций +12

08:30

std::move ничего никуда не двигает: подробный рассказ о категориях значений в C++ +10

06:10

Как избежать катастрофы? Все о горячей замене в сложных системах +10

09:01

Игра во время загрузки игры +7

08:46

2.8 дней до катастрофы спутников на низкой околоземной орбите +7

01:07

Теория мёртвых телеграм-каналов: почему 90% каналов не преодолеют планку в 50 подписчиков +5

09:23

Хотят многие, делают единицы: наш опыт автоматизации рутины пентеста +4

08:28

Углеродный след: кто вреднее для планеты — нейросеть или живой писатель? +3

08:15

Бесконечность, графы и Wi-Fi: неожиданный мост между теорией множеств и информатикой +2

08:00

Я стал ИИ-зависимым и вот как борюсь с этим +2

07:58

ИИ-статьи: спасение для автора или смерть интернета? Разбираемся без хайпа +2

06:31

Синдром супергероя или почему революцию лучше отложить +2

06:00

Фотогеничные проекции узлов на кубах Рубика размером n×n×n +2

10:23

Эволюция QA: от ручного тестирования к TestOps +1

07:22

Ядро Linux: Реально ли это просто программа? +60

07:01

Как написать постановку на разработку, чтобы ни у кого не было вопросов +55

09:01

«Привет! Я [0.44, -0.91, 0.66...]» или как научить машину понимать смысл слов +51

11:47

Почтовик TheBat! Легенда, прошедшая сквозь время +46

07:37

История Уолли Уика — персонажа, который подарил жизнь новому жанру… и Диззи +43

07:00

Телеграфная связь XVIII века: 230 километров за 9 минут, служебные пакеты и станции оптической ретрансляции +40

08:06

Анимированные визуализации потоков данных: движение товаров, денег и пользователей +38

08:42

Фаззинг телекома с генетическим алгоритмом: как тестировать продукт на безопасность, если обычных методов недостаточно +28

08:00

От закрытого 25 порта к собственному SMTP-сервису: как и почему это произошло +28

13:01

Админ vs студент: разбор тестового задания — сервис консультаций на Laravel за неделю +27

11:24

Чпоньк! — как сделать разработку в 1С такой же быстрой, как Ctrl+S в VS Code +18

09:40

Assumed Breach как эволюция подходов к внутреннему пентесту +18

09:28

Как достучаться до клиента в мобильном приложении: вчера и сегодня +18

08:20

Экономисты OpenAI уволились, потому что компания отказывается публиковать правду об ИИ и рабочих местах +18

14:20

NetBSD и NVIDIA Optimus +17

11:13

Почему я выбрал Suno AI для создания мемного альбома «Вася Тестировщик»? +17

07:00

Эволюция умного дома: от ОВЕН к Wiren Board и Home Assistant +17

16:44

Конфигуратор микроконтроллеров STM8S103/105 +15

18:21

Готов лектор, давно готов! Про митапы и вебинары +13

10:53

Распродажа «Старый Новый год» +11

13:01

Я мечтал о фотоаппарате, которого не существует, поэтому создал его сам +149

08:01

Грохот, который узнают за десятки километров: легенда Ан-22 +127

08:53

Перестань вайбкодить: почему «разработка на расслабоне» убьет твою карьеру +124

06:00

Проектирование сервиса персональной ленты. Как решать System Design? +71

12:00

Экстремальное масштабирование: концепт многочиплетного пакета Intel +46

15:13

Редчайший прототип Motorola E398, который работал на… Linux +44

09:01

Будущее дронов: встроенный ИИ +34

14:00

NetBSD: вторая жизнь Nintendo Wii. Как и зачем я установил эту ОС на игровую консоль +33

10:01

Топ-10 инструментов для управления лог-файлами в 2026 году +33

08:50

Как протестировать собственный контроллер памяти SDRAM на FPGA +32

12:12

Как Mozilla смогла отключить интернет в Китае +31

10:07

Go: сборщик мусора там, где его не ждут +28

14:05

Микрофичи, которые хотелось бы шире распространить в языках программирования +27

21:47

Лабораторный стенд мобильного оператора в домашних условиях +26

15:14

Корутины C++20 +24

05:21

Планы Трампа после Венесуэлы, а также бикини-скандал с Grok +24

08:11

Основы производственной этики для IT-специалистов +20

16:32

PostgreSQL 19: Часть 1 или Коммитфест 2025-07 +18

13:58

Напишите мне плохой отзыв, а я приду и выясню за что +17

11:00

Косметика с кислотой: тонкая грань между «работает» и «сжигаем нафиг кожу» +16

ОБСУЖДАЕМОЕ

  • Как Mozilla смогла отключить интернет в Китае +31

    • 154   41000

    Перестань вайбкодить: почему «разработка на расслабоне» убьет твою карьеру +124

    • 149   31000

    Грохот, который узнают за десятки километров: легенда Ан-22 +127

    • 111   97000

    Программирование можно будет освоить за день без курсов, когда решат эту проблему. И нейросети тут не причем -27

    • 99   24000

    Почему учёные не могут прекратить поиски инопланетной жизни +4

    • 81   7300

    Редчайший прототип Motorola E398, который работал на… Linux +44

    • 59   17000

    Я мечтал о фотоаппарате, которого не существует, поэтому создал его сам +149

    • 53   49000

    Почтовик TheBat! Легенда, прошедшая сквозь время +46

    • 49   13000

    Подходы к state management в React -1

    • 48   6200

    Как микросервисы стали тормозом. И почему мы вернулись к монолиту +8

    • 37   27000

    Теория мёртвых телеграм-каналов: почему 90% каналов не преодолеют планку в 50 подписчиков +5

    • 34   9900

    Ядро Linux: Реально ли это просто программа? +60

    • 34   14000

    Почему жене не стоит работать за копейки, и как найти золотую середину -7

    • 34   7300

    Будущее дронов: встроенный ИИ +34

    • 34   13000

    Константа во всем: одна простая задача за O(1) +6

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