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

Подписка


ЛУЧШЕЕ

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

Дежавю на 3 триллиона: Хроники потерянного капитала от доткомов до ИИ +2

04:14

Физики изучили невидимый парный танец плазменных частиц +2

05:06

Роскомнадзор пытается заблокировать ВСЁ, а также красный уровень тревожности в OpenAI +47

07:01

Создаем шахматы с «туманом войны» на JavaScript: от идеи до работающего прототипа +44

13:01

Почему хорошие разработчики пишут плохой код в больших компаниях +34

08:00

Nokia N70: почему этот смартфон стал культовым и что у него внутри +30

09:01

Видеокодек AV2 готов. Почему нам важны открытые стандарты +27

15:41

Зарядка Essager 80W – когда 80 Вт незаметно оказываются 10 Вт +25

08:06

Вторичный рынок номеров: почему покупка новой SIM-карты — это лотерея с безопасностью (кейс Tele2) +25

10:01

Солнечные панели для ЦОДа выгоднее, чем АЭС +21

11:10

Работаем быстро, храним экономно: в деталях о механизме охлаждения для Tarantool DB 3.0 +17

11:10

Работаем быстро, храним экономно: в деталях о механизме охлаждения для Tarantool DB 3.0 +17

07:01

CLI-инструменты в Битрикс: используем консоль вместо ручек +17

19:30

Мой Thinkpad X220. Апгрейды и Coreboot-ы. Часть 1 — Апгрейды +15

07:05

История контактных линз и то, как я сам стал «линзариком». Часть 1 +15

09:50

Векторный поиск: как выбрать систему и не пожалеть +14

09:30

Как я с DeepSeek писал информационную систему (электронный журнал) для образовательного центра за пару дней +14

08:37

Как понять, чего хочет заказчик? +14

16:27

Запуск x64 программ на ARM или почему вы не захотите этим заниматься +12

10:51

CRM в мемах: смешно, хоть плачь +12

10:20

Правда о железнодорожных тормозах: часть 7 — электродинамическое торможение +12

09:43

Прогресс разработки TypeScript 7: что уже работает и чего ждать +12

12:16

Я задолбался читать про АИ +345

15:13

Олимпиады — всё? +76

13:01

«Спекки» в XXI веке: как я обзавёлся ZX Evolution, и что из этого вышло +71

11:20

Миска риса и русский авось +66

09:02

Несколько анекдотичных эпизодов из моей юности и ранней карьеры +45

08:00

Как уход Crucial и ИИ-тренды влияют на цены DDR5 и SSD +40

15:42

Три способа менять один объект из нескольких потоков. Больше нет +39

16:02

Самописный SDR для спутника RS44 +36

13:20

Последние советские экспедиции на станцию «Мир» — ЭО-9 и ЭО-10 +33

13:15

Bug Bounty Минцифры: как найти критическую уязвимость и получить дырку от бублика в награду +31

09:16

Эйджизм в IT: бороться нельзя скрывать +31

17:28

Иллюзия 95%: гайд по самой частой элементарной ошибке в Data Science +29

15:10

Как LLM-вендоры обращаются с вашими данными: подробный разбор безопасности и конфиденциальности +26

12:58

Теоремы Гёделя, Тьюринга и Хайтина – доказательства неалгоритмичности Вселенной и неполноты физических теорий? +22

05:01

Математика боя: ученый из МФТИ построил модель современных военных действий +20

16:00

7 кВт, четыре года и миллион штрафов +19

15:58

Радар для прослушки телефона с трёх метров +19

15:05

GUCA: эволюция на графах («Живые графы» 2.0) +19

08:05

Как работают современные браузеры. Часть 1 +17

17:03

Спасти Европу от самой себя… +16

ОБСУЖДАЕМОЕ

  • Я задолбался читать про АИ +345

    • 162   25000

    Олимпиады — всё? +76

    • 150   17000

    Математика боя: ученый из МФТИ построил модель современных военных действий +20

    • 123   37000

    Роскомнадзор пытается заблокировать ВСЁ, а также красный уровень тревожности в OpenAI +47

    • 103   54000

    Спасти Европу от самой себя… +16

    • 64   14000

    Вторичный рынок номеров: почему покупка новой SIM-карты — это лотерея с безопасностью (кейс Tele2) +25

    • 56   8100

    Эйджизм в IT: бороться нельзя скрывать +34

    • 54   13000

    Торренты и пиратство в разных странах +9

    • 53   8900

    Bug Bounty Минцифры: как найти критическую уязвимость и получить дырку от бублика в награду +31

    • 46   14000

    Смартфоны негативно влияют на успеваемость ученика. Правда? +10

    • 46   7000

    Почему токсичные эксперты больше никому не нужны — и при чём тут ИИ +5

    • 43   6300

    Три способа менять один объект из нескольких потоков. Больше нет +39

    • 42   12000

    Радар для прослушки телефона с трёх метров +19

    • 39   43000

    Как через Яндекс Маркет пиратские лицензии продают +5

    • 39   11000

    Солнечные панели для ЦОДа выгоднее, чем АЭС +21

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