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

Автономный дом кочевника с дождевой водой, солнечными панелями. Жизнь без водопровода, газа и счетов +29

09:01

Сборка IBM-PC XT на базе ПЛИС +14

07:33

Погибший мамонтенок раскрыл свои тайны: ученые прочитали его РНК спустя 39 тысяч лет +11

06:52

Cure :: Завтипы и формальная верификация для BEAM +11

06:26

Ошибки, которые я совершал при оценке стоимости проектов на фрилансе +9

08:23

Текстовые игры возвращаются? Новые сферы применения, а также некоторые руководства и ресурсы для разработки +6

08:00

Портативные консоли осени 2025: от компактных Android-моделей до тяжеловесов на Strix Halo +5

07:16

Дискретные дифференциальные операторы +3

10:31

Softbank тайно избавился от акций Nvidia, а SEC расследует деятельность OpenAI. Лопнет ли пузырь ИИ? +2

10:00

Зачем вам PMBoK, когда есть эта статья? +2

09:27

Poetry vs Pip: Почему пора перестать использовать requirements.txt +2

03:18

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

00:39

24 «привычки» оптимизации изображений +2

08:55

Код, который нас убивает +1

09:01

Часы, минуты и секунды: как люди нарезали сутки с древности до наших дней? +33

13:01

Что происходит с удалёнными файлами: разбираем алгоритм TRIM и его нюансы +31

10:05

MIT доказал провал 95% проектов, OpenAI признали галлюцинации, или почему ИИ никогда не заменит людей +26

13:10

Сексуальный подтекст андроида Эша или как Бильбо Бэггинс попал в фильм непонятной категории +25

23:45

Вайб вместо звука: как я за вечер собрал вибровариометр на ESP32, а Gemini и ко сгенерировали всё, кроме пайки +22

08:00

Loongson 3D7000: новый китайский процессор с большим потенциалом. Что это за чип? +20

17:27

Мы добавили поддержку ещё 19 языков России и СНГ в проект silero-stress +17

13:08

Как я проходил собеседование на Senior Java +16

05:06

Лабораторная работа по тонкой настройке LLM для нестандартных задач классификации +13

18:17

Новый пузырь или фундаментальный рост? +12

15:56

Три маразма Оптимизации +11

10:05

LLM в науке. Используем LLM в анализе эксперимента +9

08:41

ООП в Python на пальцах: Пишем свою текстовую RPG с нуля +8

07:13

AI на фотонных чипах все ближе: ученые провели тензорные вычисления с помощью света +8

11:44

Создатель логотипа Rolling Stone Джим Паркинсон: как придумывались уникальные шрифты и дизайн для журналов (и не только) +7

22:42

Всё, что вы хотели знать о t-тесте, но боялись спросить +6

16:32

Беды с intel_pstate на Lenovo Yoga 9 2-in-1 +6

06:50

Кому принадлежит ваша CMS? +6

00:00

Оптимизация производительности приложений: проблемы, решения, практические рекомендации +5

14:34

Вайбкодинг реальности: Как я заставил AI переписать физику, просто пересылая сообщения между окнами +4

15:16

Меня не повысили +86

14:46

GigaChat 3 Ultra Preview — тяжёлый open source +74

14:46

GigaChat 3 Ultra Preview — тяжёлый open source +73

07:45

Сколько воды в бочке? +50

09:01

Кросс-компиляция и запуск консольного Go‑приложения на Android, Windows, macOS и Linux +49

08:00

Marathon OS: экспериментальная мобильная ОС на Qt6 и Wayland с фокусом на производительность +44

16:05

Немного об электродвигателях +43

13:01

Интернет бесподобен! Спасибо, TCP +36

09:07

Наш новый LLM-based синтез речи +34

07:05

Прямое измерение атомного тепла опровергает старую догму о перегреве +33

08:05

«Фамипия». Венгерские домофоны в подъездах Питера +29

13:00

Как беспроводные датчики окупились за один сезон морозов +26

13:16

Как я «взломал» адресную книгу Radmin, чтобы не вводить 1000 IP-адресов вручную +24

08:15

Большое исследование C#-разработчиков +23

09:20

PostgreSQL Antipatterns: отказ от агрегатных функций = кратное ускорение +22

12:30

Восемь высокопроизводительных Python-библиотек в копилку разработчикам +21

16:05

Запертые хиты недавнего прошлого. Каким играм эпохи PS3 очень нужен ХОТЯ БЫ РЕМАСТЕР +20

07:51

Осваиваем ML WAF: от текстовых правил к машинному обучению +20

06:00

Эффективные Large Language Models: от линейного attention к гибридным архитектурам, наши результаты и выводы +19

13:55

Nano Banana Pro — почему это прорывная модель генерации и редактирования изображений? Проверяем на реальных примерах +18

ОБСУЖДАЕМОЕ

  • Оптическое радио -5

    • 76   2200

    MIT доказал провал 95% проектов, OpenAI признали галлюцинации, или почему ИИ никогда не заменит людей +26

    • 75   10000

    Меня не повысили +86

    • 64   27000

    Сколько воды в бочке? +50

    • 48   7600

    GigaChat 3 Ultra Preview — тяжёлый open source +74

    • 41   9600

    GigaChat 3 Ultra Preview — тяжёлый open source +73

    • 41   9600

    Интернет бесподобен! Спасибо, TCP +36

    • 39   19000

    Как беспроводные датчики окупились за один сезон морозов +26

    • 35   4600

    Яндекс. Мнение -4

    • 35   1800

    Вайбкодинг реальности: Как я заставил AI переписать физику, просто пересылая сообщения между окнами +4

    • 34   1700

    Как Python помог «разобрать» 10 000 сообщений из Telegram для суда: практическое руководство для юристов +1

    • 34   7200

    Как я проходил собеседование на Senior Java +16

    • 29   4800

    Часы, минуты и секунды: как люди нарезали сутки с древности до наших дней? +33

    • 27   4000

    Тайна раскрыта! NASA опубликовало снимки скандально известного 3I/ATLAS +10

    • 26   31000

    Как вайбкодить без боли? 11 выводов, к которым я пришёл +5

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