• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll

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

Подписка


ЛУЧШЕЕ

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

One-shot промптинг. Как я начал вайбкодить в 10? раз быстрее +64

08:05

Самодельная паяльная станция с цифровой индикацией температуры на жесткой логике +42

08:00

Всё везде и сразу +39

08:34

Лабиринты текста как игровая механика, или как неэкранизируемая литература становится источником геймдизайна +32

06:54

Picodata: вторая жизнь in-memory баз данных +25

05:15

Как я разработал расширение для браузера за 3 дня — и получил первого платного пользователя уже на следующий день +25

07:58

Я нашёл огромную дыру в дейтинг-приложении, а разработчики попытались её скрыть +24

09:01

ЦОД 2050: три реалистичные концепции развития дата-центров +21

13:01

Введение в RawTherapee +19

13:00

Массовые увольнения в российском IT: что на самом деле происходит в компаниях — взгляд CEO +19

14:45

Переходим от legacy к построению Feature Store +18

09:34

Криптография эпохи Ренессанса: классика не стареет +16

07:00

LLM as a Judge: опыт оптимизации генератора описаний Pull Request +16

09:18

Распродажа в издательстве «Питер» +15

14:12

Как я сменил лопату на клавиатуру: мой путь в IT после 30 +14

07:00

Электрокэбы, полный привод и гонки: история дореволюционного автопрома +13

06:09

Left Shift Testing: как выстроить процесс, чтобы тесты реально помогали +13

04:56

Кто выполняет функции системного аналитика в США? +13

07:01

Финансовый учет: всё и немного больше про проводки +12

10:57

Вселенная дистрибутивов Linux: От Ubuntu до Arch, от Mint до Fedora – подробный гид по выбору +11

14:22

Ещё 10 ошибок авторов Хабра +135

07:43

Больше нет входа в IT. Только выход +62

14:15

Мое производство электрощитов приносит 40 млн в год. Спасибо нейросетям и СССР за конструкторскую школу +57

05:16

Дело о Транзитроне — или Ламповый тьюториал для любопытных +48

08:01

Трамплин в интернет: как мы ускорили запуск Яндекс Браузера +44

13:06

Введение в Angie: краткая история и отличия от Nginx +42

08:35

Распределённый инференс и шардирование LLM. Часть 1: настройка GPU, проброс в Proxmox и настройка Kubernetes +36

03:22

Как за один вечер создать репутацию вашего стартапа в поисковой выдаче: 20 бесплатных площадок для быстрого буста +35

07:00

DevOps без боли: 8 инструментов для мониторинга, автоматизации и стабильной работы команд +33

16:15

Как я написал эмулятор Nintendo Gameboy на C++ за две недели +32

13:01

Как создавались вокальные эффекты Daft Punk +32

12:00

Story Points не работают? И другие мифы про оценку задач, в которые мы почему-то верим +32

06:53

Важное обновление BatteryTest 2 +32

04:53

Баффет наконец накопил достаточно для выхода на пенсию, а в OpenAI выкатили новый хитрый план +26

10:26

От релиз-менеджера до разработчика: почему я ушел из QA и не жалею +25

10:09

Как настраивать сети: готовые решения Selectel для максимальной отказоустойчивости +25

09:01

Почему из технологий делают культы +24

09:31

Как ESLint помогает управлять архитектурой проекта +23

08:57

Разбор полётов: что умеет отечественная СХД Аэродиск AQ440 +22

15:16

Бирюзовые компании в РФ: как не посинеть в найме +21

19:36

ООП не мертво. Вы просто пользуетесь им как молотком по клавиатуре +153

08:00

Электробус из 1907 года от мошенников-стартаперов. И да, он возил пассажиров +56

13:01

Как serverless-архитектура влияет на модернизацию инфраструктуры +43

17:21

CTO: рынок, стратегия и инженерная культура +37

09:01

Google Maps не знают, как работает адресация улиц +37

09:15

Wizordum — пример правильной ностальгии +36

06:30

Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование +35

10:00

Multi-GPU Rendering для игр жив? +34

16:08

Как отключить слежку на умном ТВ +33

10:05

Разговоры с мамой, остросюжетный роман и дофаминовые ловушки. Что и зачем читать продакту в 2025 году +31

15:16

Заговор разработчиков против корпораций: работа с командой +26

12:28

Как устроен arXiv — самая преобразующая платформа во всей науке +23

07:00

От песка в глазах к панораме: как 49-дюймовый монитор заменил два 27-дюймовых и сделал жизнь и работу комфортнее +23

05:47

Убить героя: почему героизм — это выбор легкого пути, который вредит не только вам, но и окружающим +21

14:46

Что открыть в 2025, если ты не Илон Маск и не хочешь продавать курсы? +20

16:24

Корутины в C++20: архитектура и практическое применение +17

17:01

PTTJS — формат текстового хранения комплексных таблиц +15

14:00

Корпоративное ЕГЭ или как обучение сотрудников НЕ влияет на рост и эффективность +14

18:20

Подмена E-EDID на Windows +12

18:33

Пишем (и используем) ИИ-агент на Gradle и Ollama +10

ОБСУЖДАЕМОЕ

  • Больше нет входа в IT. Только выход +62

    • 467   112000

    От песка в глазах к панораме: как 49-дюймовый монитор заменил два 27-дюймовых и сделал жизнь и работу комфортнее +23

    • 362   66000

    ООП не мертво. Вы просто пользуетесь им как молотком по клавиатуре +153

    • 285   40000

    Ещё 10 ошибок авторов Хабра +135

    • 124   6900

    Мое производство электрощитов приносит 40 млн в год. Спасибо нейросетям и СССР за конструкторскую школу +57

    • 122   55000

    Массовые увольнения в российском IT: что на самом деле происходит в компаниях — взгляд CEO +19

    • 112   20000

    «Накопитель риска» в команде: как одиночные эксперты тормозят развитие +4

    • 77   9100

    Google Maps не знают, как работает адресация улиц +37

    • 76   10000

    Дело о Транзитроне — или Ламповый тьюториал для любопытных +48

    • 61   4700

    Как отключить слежку на умном ТВ +33

    • 60   16000

    Бирюзовые компании в РФ: как не посинеть в найме +21

    • 49   44000

    One-shot промптинг. Как я начал вайбкодить в 10? раз быстрее +65

    • 48   15000

    Трамплин в интернет: как мы ускорили запуск Яндекс Браузера +44

    • 45   4100

    Быстрый алгоритм fulltext-поиска без токенизации +15

    • 41   2200

    Шесть лет на диване: мои выводы об удалённой работе -2

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