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

Измеритель силы хвата. Когда реально переоценил свою силу +33

09:01

Георгий Герганов, автор llama.cpp и звукового кейлогера +19

04:57

Илон Маск создал новую партию, а Цукерберг продолжает повышать ставки в битве за AI-таланты +19

08:00

Новое в контроллерах Bitrix Framework: фильтры и валидация +14

06:45

Интеграция Flutter Mobile SDK в ОС Аврора +13

09:15

Программируем квадрокоптер на STM32 +9

08:15

Универсальное языковое приложение. Часть 1: по-фразовый плеер с параллельными текстами и редактор субтитров +8

11:10

Почему разработчики не делают «по уму», даже когда знают как +7

11:03

VPS сервер по цене пачки чипсов: обзор самых дешёвых тарифов российских хостеров +6

08:41

Странная физика, которая дала жизнь искусственному интеллекту +6

10:01

Нейроуловки для изучения английского: как запоминать слова без зубрежки +5

08:43

Почему Telegram может стать новым лидером в гонке ИИ +5

11:43

Java Digest # 26 +4

09:54

Автопилот в киберзащите: спасаем аналитиков SOC от рутины +4

07:15

Тезисы о std::set и std::multiset в C++ +4

07:00

Почему генерация тест-кейсов с ИИ — это не магия, а борьба с документацией +4

06:58

Портативное железо 2025: подборка новых мини-ноутбуков для работы и отдыха +4

05:52

Личные границы в корпорации: когда «мы ж команда» становится угрозой +4

05:17

Милливольтметр на экране ПК: простое решение +4

04:13

Технологическая эволюция Mercado Libre: от монолита к мультиоблачной платформе +4

11:30

Я 10 лет искал причину головной боли, оказалось — чипсы +145

09:01

Программирование как разработка теорий: почему senior-разработчики стали ценны как никогда? +101

20:06

VHS-Decode — новый метод оцифровки видео +69

11:15

Мы — не семья: как компании заставляют тебя работать за идею и спасибо +34

19:05

Компьютерные сети для начинающих +30

13:01

Жизнь и смерть Карла Коха: первый хакер на службе КГБ в поисках всемирного заговора и тайны числа 23. Часть 9 — финал +30

08:12

Плотнее, быстрее, дешевле: керамические накопители Cerabyte бросают вызов LTO +30

08:00

От дефицита к ажиотажу: почему DDR4 снова в центре внимания… по тройной цене +21

13:49

Процессор на коленке ч.4. Конвейер +18

06:48

EngEasy.ru — моё приложение английского. Идея, процесс, технологии +18

06:15

Внедрение зависимостей в PHP: от основ до фреймворков +17

20:07

Оптимизация языковой модели Mamba для выполнения на CPU +14

15:00

Почему все ломается, или Зачем менеджеру в ИТ софт-скилы +13

16:43

В ReactOS заключен контракт для улучшения набора тестов +10

13:04

Изобретатель механического светофора: история Гаррета Моргана +8

12:08

Деревья умеют выделять «дождеобразующие» вещества +7

11:13

Docker + Neovim: поднимаем конфиг на любом сервере и не засоряем систему +7

10:40

Как мы подняли современный портал документации из россыпи .md файлов: пошаговое руководство по MkDocs + Material +7

04:15

Собираем комплекс для качественного офлайн-перевода текстов, работающий на самом обычном игровом компьютере +7

16:20

Docs as Code и его использование на проектах +6

09:01

Первые анекдоты о программистах: как выглядел юмор айтишников в 1996-1998 годах? +129

09:56

Датчик утечки воды и не только, просто и почти даром +55

12:55

Лучшие игры легендарной машины: 45 лет назад на свет появилась линейка компьютеров ZX +53

13:01

GPS в городских джунглях: почему навигатор «прыгает» между небоскрёбами +44

14:05

Пишем 3D-игру для ретро-устройств весом в 600Кб… +39

09:44

Как я почти продал ник за $9500 в Telegram +34

08:04

Deepin 25: китайский дистрибутив Linux с ИИ и обновленным DDE +25

10:16

Как сделать любую поверхность сенсорной +22

08:05

О мягких и жёстких ссылках в Linux +22

00:00

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

07:34

Продаешь крипту через P2P? Налоговая может потребовать 6% со всего оборота +16

08:02

Лучшие нейросети для создания игр +15

13:50

PHP и Laravel дайджест новостей за июнь 2025 года +12

08:00

Алгоритм релакса: как пазлы помогают сконцентрироваться на сложных задачах и не выгореть +12

12:00

История создания процессора ARM: от амбициозного проекта до сердца цифровой революции +11

09:16

SOLID, DRY, KISS, YAGNI и др. принципы разработки, пугающие новичка в IT +11

07:00

Покажи свой стартап/пет-проект (июль) +8

10:35

Часть 2: Создание пользовательского интерфейса на дисплее Guition с ESPHome и библиотекой LVGL +7

06:38

Система позиционирования и фиксации дрона на посадочном столе +7

09:56

Скриншот-тестирование фронтенда: руководство по применению в 2025 году +6

ОБСУЖДАЕМОЕ

  • Тебе не поступить на программиста. Всё кончено -5

    • 382   97000

    Я 10 лет искал причину головной боли, оказалось — чипсы +145

    • 300   25000

    Первые анекдоты о программистах: как выглядел юмор айтишников в 1996-1998 годах? +129

    • 178   49000

    Датчик утечки воды и не только, просто и почти даром +55

    • 98   25000

    От PHP к Zig: как я избавился от костылей в биллинг-системе -1

    • 83   4900

    VHS-Decode — новый метод оцифровки видео +73

    • 79   6700

    Лучшие игры легендарной машины: 45 лет назад на свет появилась линейка компьютеров ZX +53

    • 75   13000

    Метафизика мнимой единицы -7

    • 71   3300

    Программирование как разработка теорий: почему senior-разработчики стали ценны как никогда? +101

    • 60   18000

    Как я почти продал ник за $9500 в Telegram +34

    • 39   8800

    Покажи свой стартап/пет-проект (июль) +8

    • 35   2600

    Компьютерные сети для начинающих +30

    • 33   12000

    Мы — не семья: как компании заставляют тебя работать за идею и спасибо +34

    • 33   7200

    Почему ваш ИИ превращается в ваше эхо: Гипотеза архитектурного слияния и как с этим бороться +5

    • 31   805

    EngEasy.ru — моё приложение английского. Идея, процесс, технологии +18

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